[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 19:28:00 GMT 2006
------- Comment #46 from dave at hiauly1 dot hia dot nrc dot ca 2006-01-14 19:28 -------
Subject: Re: [4.1/4.2 Regression] internal compiler error: verify_flow_info
failed
> The lack of initialization leads to some strangeness later in the
> assembly code:
>
> copy %r28,%r3
I would have expected that the compiler copy r28 to a different register
(e.g., r4) here. It suggests the register aliveness for r3 is messed up.
If I initialize the variable node, the compiler uses a different register.
I see in postreload:
(jump_insn 21 19 24 2 (parallel [
(set (pc)
(if_then_else (ne (reg:SI 28 %r28)
(const_int 0 [0x0]))
(label_ref 31)
(pc)))
(set (reg/v:SI 3 %r3 [orig:94 call_result ] [94])
(reg:SI 28 %r28))
]) 227 {*pa.md:8779} (insn_list:REG_DEP_TRUE 19 (nil))
(expr_list:REG_BR_PROB (const_int 5000 [0x1388])
(nil)))
;; End of basic block 2, registers live:
3 [%r3] 30 [%r30] 94
;; Start of basic block 3, registers live: 30 [%r30] 94
(note 24 21 26 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 26 24 27 3 (set (reg:SI 26 %r26 [ node ])
(reg/v/f:SI 3 %r3 [orig:95 node ] [95])) 37 {*pa.md:2308} (nil)
(nil))
Note that insn 26 thinks r3 contains node but insn 21 has just set
it to call_result.
> .L2:
> bl T,%r2
> copy %r3,%r26
To generate the code, I simply compiled testcase #2 with gcc -O2 -S.
The compiler was built with the patch in comment #39.
Dave
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24626
More information about the Gcc-bugs
mailing list