------- Comment #5 from jakub at gcc dot gnu dot org  2008-09-10 07:10 -------
This is dse1 which turns:
(insn 5 2 7 2 P.c:8 (set (mem/f/c/i:DI (plus:DI (reg/f:DI 20 frame)
                (const_int -24 [0xffffffffffffffe8])) [2 ip+0 S8 A64])
        (symbol_ref:DI ("c") <var_decl 0x7fe225d2c820 c>)) 89 {*movdi_1_rex64}
(nil))

(insn 7 5 8 2 P.c:12 (set (reg:QI 59)
        (mem:QI (plus:DI (reg/f:DI 20 frame)
                (const_int -24 [0xffffffffffffffe8])) [0 S1 A8])) 62 {*movqi_1}
(nil))

(insn 8 7 9 2 P.c:12 (set (mem/s/j:QI (plus:DI (reg/f:DI 20 frame)
                (const_int -16 [0xfffffffffffffff0])) [0 a+0 S1 A64])
        (reg:QI 59)) 62 {*movqi_1} (expr_list:REG_DEAD (reg:QI 59)
        (nil)))

(insn 9 8 10 2 P.c:12 (set (reg:QI 60)
        (mem:QI (plus:DI (reg/f:DI 20 frame)
                (const_int -23 [0xffffffffffffffe9])) [0 S1 A8])) 62 {*movqi_1}
(nil))

(insn 10 9 11 2 P.c:12 (set (mem/s/j:QI (plus:DI (reg/f:DI 20 frame)
                (const_int -15 [0xfffffffffffffff1])) [0 a+1 S1 A8])
        (reg:QI 60)) 62 {*movqi_1} (expr_list:REG_DEAD (reg:QI 60)
        (nil)))
into:
(insn 21 2 22 2 P.c:8 (set (reg/f:DI 63)
        (symbol_ref:DI ("c") <var_decl 0x7fe225d2c820 c>)) -1 (nil))

(insn 22 21 24 2 P.c:8 (set (reg:QI 62)
        (subreg:QI (reg/f:DI 63) 0)) -1 (nil))

(insn 24 22 23 2 P.c:8 (set (reg:HI 64)
        (subreg:HI (symbol_ref:DI ("c") <var_decl 0x7fe225d2c820 c>) 0)) -1
(nil))

(insn 23 24 25 2 P.c:8 (parallel [
            (set (reg:HI 64)
                (lshiftrt:HI (reg:HI 64)
                    (const_int 8 [0x8])))
            (clobber (reg:CC 17 flags))
        ]) -1 (nil))

(insn 25 23 5 2 P.c:8 (set (reg:QI 65)
        (subreg:QI (reg:HI 64) 0)) -1 (nil))

(insn 5 25 7 2 P.c:8 (set (mem/f/c/i:DI (plus:DI (reg/f:DI 20 frame)
                (const_int -24 [0xffffffffffffffe8])) [2 ip+0 S8 A64])
        (symbol_ref:DI ("c") <var_decl 0x7fe225d2c820 c>)) 89 {*movdi_1_rex64}
(nil))

(insn 7 5 8 2 P.c:12 (set (reg:QI 59)
        (reg:QI 62)) 62 {*movqi_1} (nil))

(insn 8 7 9 2 P.c:12 (set (mem/s/j:QI (plus:DI (reg/f:DI 20 frame)
                (const_int -16 [0xfffffffffffffff0])) [0 a+0 S1 A64])
        (reg:QI 59)) 62 {*movqi_1} (expr_list:REG_DEAD (reg:QI 59)
        (nil)))

(insn 9 8 10 2 P.c:12 (set (reg:QI 60)
        (reg:QI 65)) 62 {*movqi_1} (nil))

(insn 10 9 11 2 P.c:12 (set (mem/s/j:QI (plus:DI (reg/f:DI 20 frame)
                (const_int -15 [0xfffffffffffffff1])) [0 a+1 S1 A8])
        (reg:QI 60)) 62 {*movqi_1} (expr_list:REG_DEAD (reg:QI 60)
        (nil)))

(subreg (symbol_ref ()) is of course invalid.


-- 


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

Reply via email to