flow still deleting important labels

Richard Henderson rth@cygnus.com
Sun Mar 28 09:55:00 GMT 1999


On Sun, Mar 28, 1999 at 03:45:51AM -0700, Jeffrey A Law wrote:
> (insn/i 243 242 244 (set (reg:SI 166)
>         (high:SI (label_ref:SI 250))) 76 {add_high_const+1} (nil)
>     (expr_list:REG_EQUAL (high:SI (label_ref:SI 250))
>         (expr_list:REG_LABEL (code_label/i 250 249 251 88 "")
>             (nil))))
> 
> (insn/i 244 243 245 (set (reg:SI 167)
>         (lo_sum:SI (reg:SI 166)
>             (label_ref:SI 250))) 77 {add_high_const+2} (nil)
>     (expr_list:REG_LABEL (code_label/i 250 249 251 88 "")
>         (expr_list:REG_EQUAL (label_ref:SI 250)
>             (nil))))

Curious.  Cross compiling from Alpha I get

(insn/i 246 245 248 (set (reg:SI 169)
        (high:SI (symbol_ref/u:SI ("*L$C0009")))) 76 {add_high_const+1} (nil)
    (expr_list:REG_EQUAL (high:SI (symbol_ref/u:SI ("*L$C0009")))
        (nil)))

(insn/i 248 246 249 (set (reg:SI 171)
        (mem:SI (lo_sum:SI (reg:SI 169)
                (symbol_ref/u:SI ("*L$C0009"))) 0)) 63 {reload_outsi+2} (nil)
    (expr_list:REG_EQUAL (label_ref:SI 254)
        (nil)))

which, beyond not being fun and happy making, seems weird that we'd
have decided to drop it into the constant pool.

I'll give it a poke native and see what's different.


r~


More information about the Gcc-bugs mailing list