[Bug target/28574] [4.2 regression] switch statement points to unreferenced label at -O2

tbm at cyrius dot com gcc-bugzilla@gcc.gnu.org
Wed Aug 2 19:18:00 GMT 2006



------- Comment #5 from tbm at cyrius dot com  2006-08-02 19:17 -------
So from 144r (peephole2) to 145r (ce3) it goes from:

;; Insn is not within a basic block
(code_label 48 47 49 11 "" [3 uses])

;; Insn is not within a basic block
(jump_insn 49 48 50 (addr_diff_vec:DI (label_ref:DI 48)
         [
            (label_ref:DI 103)
            (label_ref:DI 103)
            (label_ref:DI 103)
            (label_ref:DI 103)
            (label_ref:DI 103)
        ]
        (const_int 0 [0x0])
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(barrier 50 49 103)


to:

...(insn 185 35 186 3 (set (reg/f:DI 14 r14 [386])
        (plus:DI (high:DI (label_ref:DI 48))
            (reg:DI 1 r1))) 76 {*load_symptr_high} (nil)
    (nil))

(insn 186 185 44 3 (set (reg/f:DI 14 r14 [386])
        (lo_sum:DI (reg/f:DI 14 r14 [386])
            (label_ref:DI 48))) 77 {*load_symptr_low} (nil)
    (nil))

...

and here's where the case_label is lost.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28574



More information about the Gcc-bugs mailing list