This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/24626] [4.1/4.2 Regression] internal compiler error: verify_flow_info failed



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]