This is the mail archive of the gcc@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]

PROP_KILL_DEAD_CODE / REG_EQUAL problems


Compiling gcc.c-torture/execute/990222-1.c on the SPARC with
-O3 -fomit-frame-pointer -funroll-all-loops -finline-functions
yields the following bit of rtl after cse runs:

(insn 109 108 110 (set (reg:QI 135)
        (subreg:QI (reg:SI 134) 3)) 46 {*movqi_insn} (nil)
    (nil))

(insn 110 109 111 (set (mem:QI (reg/v/f:SI 107) 0)
        (subreg:QI (reg:SI 134) 3)) 46 {*movqi_insn} (nil)
    (nil))

(insn 111 110 112 (set (reg:SI 136)
        (ashift:SI (reg:SI 134)
            (const_int 24 [0x18]))) 299 {ashlsi3} (nil)
    (nil))

(insn 112 111 113 (set (reg:SI 137)
        (ashiftrt:SI (reg:SI 136)
            (const_int 24 [0x18]))) 306 {ashrsi3} (nil)
    (expr_list:REG_EQUAL (sign_extend:SI (reg:QI 135))

Running life_analysis (in order to setup things need by VRP)
causes insn 109 to be deleted since QI 135 is never used,
however the REG_EQUAL note on insn 112 is still present.

Should life_analysis remove any REG_EQUAL notes which it
potently invalidates, is the problem elsewhere, or is
this not a problem?

-- John
-------------------------------------------------------------------------
|   Feith Systems  |   Voice: 1-215-646-8000  |  Email: john@feith.com  |
|    John Wehle    |     Fax: 1-215-540-5495  |                         |
-------------------------------------------------------------------------


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