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 target/33151] Invalid insn with pre_inc



------- Comment #2 from pinskia at gcc dot gnu dot org  2007-08-22 22:39 -------
What the auto pre-increment pass is doing looks ok from the point of view of
correct RTL.
Before:
(insn 22 21 70 4 t.c:11 (parallel [
            (set (reg:DF 123 [ pretmp.23 ])
                (float:DF (reg/v:SI 128 [ n ])))
            (use (reg:SI 132))
            (use (reg:DF 133))
            (clobber (mem/c/i:DF (plus:SI (reg/f:SI 113 sfp)
                        (const_int 8 [0x8])) [2 S8 A64]))
            (clobber (reg:DF 137))
            (clobber (reg:SI 138))
        ]) 244 {*floatsidf2_internal} (expr_list:REG_DEAD (reg:DF 133)
        (expr_list:REG_DEAD (reg:SI 132)
            (expr_list:REG_UNUSED (reg:SI 138)
                (expr_list:REG_UNUSED (reg:DF 137)
                    (expr_list:REG_EQUAL (float:DF (reg/v:SI 128 [ n ]))
                        (nil)))))))

(insn 70 22 24 4 t.c:6 (set (reg/f:SI 139)
        (plus:SI (reg/f:SI 113 sfp)
            (const_int 8 [0x8]))) 79 {*addsi3_internal1} (nil))

After:
(insn 80 21 22 4 t.c:11 (set (reg/f:SI 139)
        (reg/f:SI 113 sfp)) -1 (nil))

(insn 22 80 24 4 t.c:11 (parallel [
            (set (reg:DF 123 [ pretmp.23 ])
                (float:DF (reg/v:SI 128 [ n ])))
            (use (reg:SI 132))
            (use (reg:DF 133))
            (clobber (mem/c/i:DF (pre_inc:SI (reg/f:SI 139)) [2 S8 A64]))
            (clobber (reg:DF 137))
            (clobber (reg:SI 138))
        ]) 244 {*floatsidf2_internal} (expr_list:REG_INC (reg/f:SI 139)
        (expr_list:REG_DEAD (reg:DF 133)
            (expr_list:REG_DEAD (reg:SI 132)
                (expr_list:REG_UNUSED (reg:SI 138)
                    (expr_list:REG_UNUSED (reg:DF 137)
                        (expr_list:REG_EQUAL (float:DF (reg/v:SI 128 [ n ]))
                            (nil))))))))

The semantics have not changed but we get an pre_inc inside the clobber now.


-- 


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


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