I have done some further investigation on this problem, and I have attached a reduced testcase, together with the output at stage .31, .32 and .33 stage1/cc1 -fpreprocessed thetest_reduced.i -quiet -dumpbase thetest_reduced.c -auxbase-strip thetest_reduced.o -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -pedantic -Wno-long-long -Werror -Wno-error -version -fno-common -o thetest_reduced.s -da -v ignoring nonexistent directory "/usr/local/gcc-3.5-tree-ssa-cvs/include" ignoring nonexistent directory "/usr/local/gcc-3.5-tree-ssa-cvs/lib/gcc-lib/armv5l-unknown-linux-gnu/3.5-tree-ssa/include" ignoring nonexistent directory "/usr/local/gcc-3.5-tree-ssa-cvs/armv5l-unknown-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/include End of search list. GNU C version 3.5-tree-ssa 20030522 (merged 20030511) (armv5l-unknown-linux-gnu) compiled by GNU C version 3.0.4. GGC heuristics: --param ggc-min-expand=38 --param ggc-min-heapsize=15924 thetest_reduced.i: In function `attr_rtx_cost': thetest_reduced.i:380: internal compiler error: in verify_local_live_at_start, at flow.c:578 stack trace at that point : #0 fancy_abort (file=0x5ee010 "../../gcc/gcc/flow.c", line=578, function=0x5ee0f0 "verify_local_live_at_start") at ../../gcc/gcc/diagnostic.c:1439 #1 0x002778d4 in verify_local_live_at_start (new_live_at_start=0xbfffed80, bb=0x6bdc68) at ../../gcc/gcc/flow.c:578 #2 0x00277e6c in update_life_info (blocks=0x6caaf8, extent=UPDATE_LIFE_LOCAL, prop_flags=1) at ../../gcc/gcc/flow.c:715 #3 0x0059b51c in schedule_insns (dump_file=0x6cab18) at ../../gcc/gcc/sched-rgn.c:2759 #4 0x0048f0c0 in rest_of_compilation (decl=0x401b4310) at ../../gcc/gcc/toplev.c:3661 #5 0x00034c10 in c_expand_body_1 (fndecl=0x401b4310, nested_p=0) at ../../gcc/gcc/c-decl.c:6439 #6 0x0003533c in c_expand_body (fndecl=0x401b4310) at ../../gcc/gcc/c-decl.c:6523 #7 0x000343f4 in finish_function (nested=0, can_defer_p=1) at ../../gcc/gcc/c-decl.c:6277 #8 0x0000b9e0 in yyparse () at c-parse.y:406 #9 0x00084278 in c_common_parse_file (set_yydebug=0) at ../../gcc/gcc/c-opts.c:1634 #10 0x0048bfe8 in compile_file () at ../../gcc/gcc/toplev.c:2252 #11 0x00493bd4 in do_compile () at ../../gcc/gcc/toplev.c:5648 #12 0x00493c50 in toplev_main (argc=25, argv=0xbffffb84) at ../../gcc/gcc/toplev.c:5679 #13 0x000dac68 in main (argc=25, argv=0xbffffb84) at ../../gcc/gcc/main.c:37 #14 0x4003976c in __libc_start_main (main=0xdac44
, argc=25, ubp_av=0xbffffb84, init=0x9514 <_init>, fini=0, rtld_fini=0, stack_end=0x0) at ../sysdeps/generic/libc-start.c:129 The problem seems to be that in update_life_info, the registers live_at_start has changed (register r0 was removed...) live_at_start mismatch in bb 15, aborting New: first = 0x6cbf90 current = 0x6cbf90 indx = 0 0x6cbf90 next = (nil) prev = (nil) indx = 0 bits = { 4 5 6 7 8 10 13 14 25 26 } Old: ;; Basic block 15, loop depth 0, count 0 ;; Predecessors: 1 [29.0%] (can_fallthru) ;; Registers live at start: 0 [r0] 4 [r4] 5 [r5] 6 [r6] 7 [r7] 8 [r8] 10 [sl] 13 [sp] 14 [lr] 25 [sfp] 26 [afp] (code_label:HI 28 27 258 15 3 "" [1 uses]) (note:HI 258 28 29 15 [bb 15] NOTE_INSN_BASIC_BLOCK) Although looking at the content of basic block 15 at that point, it seems to be valid to conclude that 'r0' is not live at the beginning of bb 15. Any hints ? Greetings, -- Jeroen Dobbelaere Embedded Software Engineer ACUNIA Embedded Solutions http://www.acunia.com/aes