Hi,

I am trying to get the SVN head built locally again
and back at work on the GNAT/RTEMS work I was doing.
Unfortunately, I have tripped across something that
is quite bad. Compiling on Linux x86 targeting the
PowerPC or SPARC leads to a huge compilation time
on a single file.

joel 27918 27917 98 08:18 pts/11 02:46:24 /home/joel/work-gnat/svn/b-gcc2-powerpc/./gcc/gnat1 -quiet -nostdinc -dumpbase g-catiio.adb -O2 -W -Wall -g -gnatpg -gnatO g-catiio.o g-catiio.adb -o /tmp/cch0iMng.s

Here is the same process in top:

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
27918 joel      20   0  106m  95m  10m R  100  9.6 170:37.92 gnat1

This is with a PowerPC build.  The SPARC eventually finished
in an over night build so I don't know how long it took. It doesn't appear to be thrashing on memory. Just CPU time.
I attached to the gnat1 process in gdb and got this back trace:
(gdb) bt
#0  0x083f0231 in bitmap_elt_ior (dst=0xc688880, dst_elt=0xc4170d0,
   dst_prev=0xafc2144, a_elt=0xc4170d0, b_elt=0xb1d551c, changed=0 '\0')
   at ../../gcc/gcc/bitmap.c:1404
#1  0x083f03af in bitmap_ior_into (a=0xc688880, b=0xc6822f8)
   at ../../gcc/gcc/bitmap.c:1511
#2  0x0842361e in df_live_confluence_n (e=0x42126e88)
   at ../../gcc/gcc/df-problems.c:1524
#3  0x0841d8b5 in df_worklist_propagate_forward (dataflow=0xade6c60,
   bb_index=1284, bbindex_to_postorder=0xc6d4050, pending=0xaf65f4c,
   considered=0xc651eb8) at ../../gcc/gcc/df-core.c:875
#4  0x0841dfa8 in df_worklist_dataflow (dataflow=0xade6c60,
blocks_to_consider=0xaf65618, blocks_in_postorder=0xacd75d0, n_blocks=1746)
   at ../../gcc/gcc/df-core.c:999
#5  0x0841e17b in df_analyze_problem (dflow=0xade6c60,
   blocks_to_consider=0xaf65618, postorder=0xacd75d0, n_blocks=1746)
   at ../../gcc/gcc/df-core.c:1060
#6  0x0841e50e in df_analyze () at ../../gcc/gcc/df-core.c:1150
#7  0x08c48e6c in if_convert () at ../../gcc/gcc/ifcvt.c:4045
#8 0x08c49091 in rest_of_handle_if_conversion () at ../../gcc/gcc/ifcvt.c:4124
#9  0x086430ef in execute_one_pass (pass=0x8f19200)
   at ../../gcc/gcc/passes.c:1118
#10 0x08643239 in execute_pass_list (pass=0x8f19200)
   at ../../gcc/gcc/passes.c:1171
---Type <return> to continue, or q <return> to quit---
#11 0x08643255 in execute_pass_list (pass=0x8f13080)
   at ../../gcc/gcc/passes.c:1172
#12 0x08792fa9 in tree_rest_of_compilation (fndecl=0x40048480)
   at ../../gcc/gcc/tree-optimize.c:404
#13 0x08a1006b in cgraph_expand_function (node=0x400bd300)
   at ../../gcc/gcc/cgraphunit.c:1151
#14 0x08a101fc in cgraph_expand_all_functions ()
   at ../../gcc/gcc/cgraphunit.c:1214
#15 0x08a1080d in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1421
#16 0x080a549d in gnat_write_global_declarations ()
   at ../../gcc/gcc/ada/utils.c:4024
#17 0x08705647 in compile_file () at ../../gcc/gcc/toplev.c:1055
#18 0x0870706e in do_compile () at ../../gcc/gcc/toplev.c:2245
#19 0x087070d0 in toplev_main (argc=15, argv=0xbf8d1484)
   at ../../gcc/gcc/toplev.c:2277
#20 0x083daa6e in main (argc=Cannot access memory at address 0xffffff3a
) at ../../gcc/gcc/main.c:35
(gdb)
Single stepping for  a while, I didn't see it get up the call
chain farther than df_worklist_propagate_forward before it
descended again.

Any ideas?

--joel

Reply via email to