------- Comment #45 from dave at hiauly1 dot hia dot nrc dot ca 2006-01-14 18:59 ------- Subject: Re: [4.1/4.2 Regression] internal compiler error: verify_flow_info failed
> Dave, this is another comment that isn't helpful. What is wrong in the > assembler output for comment #42, what do you expect the assembler output to > look like, how is the problem related to this bug (if it is), and how do I > reproduce it? Sorry for being vague. The issue is the following code: stw %r2,-20(%r30) bl F3,%r2 stwm %r3,64(%r30) ldi 0,%r22 copy %r3,%r26 r3 is not an argument register in F1 and it is never initialized. The copy instruction copies r3 to r26 to initializing the first argument (node) of the call to after_node_func. Thus, if the call really depended on the value, it would generate garbage. The lack of initialization just reflects the C code. I guess if there's a bug here, it's the fact that the compiler doesn't warn about the lack of initialization of node. The lack of initialization leads to some strangeness later in the assembly code: copy %r28,%r3 .L2: bl T,%r2 copy %r3,%r26 In the first instruction, the result of the call to after_node_func (call_result) is copied to register r3 and then used as the argument for the call to T. This seems wrong but I'm not sure since r3 wasn't initialized in the first place. Dave -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24626