[Bug rtl-optimization/24626] [4.1/4.2 Regression] internal compiler error: verify_flow_info failed
dave at hiauly1 dot hia dot nrc dot ca
gcc-bugzilla@gcc.gnu.org
Sat Jan 14 18:59:00 GMT 2006
------- 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
More information about the Gcc-bugs
mailing list