[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