xlc

John F Carr jfc at athena.mit.edu
Mon Sep 3 08:08:32 AEST 1990


In article <skidrow.652140292 at ceres> skidrow at ceres.ucsc.edu (Gary M. Lin) writes:
>	cc -g -O -c interface.c
>    1500-004: (U) INTERNAL COMPILER ERROR while compiling main_interface. Compilation ended. Contact your I.B.M. Service representative and provide the following information: GRARNN: r291 is used before it is defined.
>    1506-163: (S) Error recovery not possible. Compilation ended.
>xlc: 1501-230 Internal compiler error; please contact your IBM representative
>1254-004  The error code from the last failed command is 40.


I've seen two internal compiler errors so far (trying to build gcc as
a cross compiler for the RT):

    1500-004: (U) INTERNAL COMPILER ERROR while compiling yylex. Compilation ended. Contact your I.B.M. Service representative and provide the following information:GRARNN: cr2316 is used before it is defined.
    1506-163: (S) Error recovery not possible. Compilation ended.
xlc: 1501-230 Internal compiler error; please contact your IBM representative

The other error was just 1501-230 without any other explanatory text.

A few comments on the compiler: 

1. It uses the most memory of any compiler I've seen.  It uses twice as much
as mips cc 1.31 (25 MB to compile the g++ parser, compared to 12 MB for mips
cc on a DECstation; fortunately, AIX 3 seems to page/swap better than ultrix
3 does).  Even gcc doesn't use as much memory as xlc.  I'm used to hc2.1 on
the RT, which takes less than 3 MB to compile the same file:

RT:
  PID TT STAT  TIME SL RE PAGEIN DSIZ  DRS   LIM TSIZ TRS %CPU %MEM COMMAND
  780 p0 R     5:35  0 99     47 1722 1718 13672  342 338 87.9 14.7 hc2com

6000:
    USER   PID    TTY PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM CMD
     jfc 14712  pts/2 5093 25760 18180    xx  2159   792 36.9% 74% xlcentry

2. From looking at the assembly listings, the compiler doesn't do a very good
job of moving branch tests ahead of branches (if the test is 3 instructions
ahead of the branch, the branch is free).  I see a lot of consecutive test
and branch instructions.

3. Is it possible to convince xlc to make an object declared const be
read-only?  According to /bin/size, it doesn't do this.  I'm pretty sure that
the entire "data" segment is read-write private (using the RT MMU, which is
similar to that on the 6000, it is impractical to mix read-only shared and
read-write private data in a single segment).  Also, is there any equivalent
to "cc -R" (compile read-only)?  [For this question, answers for AIX 1.2
would also be welcome.]

--
    --John Carr (jfc at athena.mit.edu)



More information about the Comp.unix.aix mailing list