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]

Re: Possible CSE quirk involving SUBREG on the i386


> I'm not sure this is really a CSE issue.  Though it might be a combine
> issue.

The reason that I mention CSE is prior to it we have:

(insn 6 4 7 (set (reg/v:HI 21)
        (subreg:HI (reg:SI 22) 0)) -1 (nil)
    (nil))

(insn 13 10 16 (set (reg/v:HI 23)
        (reg/v:HI 21)) -1 (nil)
    (nil))

(insn 16 13 18 (set (mem:HI (symbol_ref:SI ("c")))
        (reg/v:HI 23)) -1 (nil)
    (nil))

(insn 18 16 20 (set (reg:SI 24)
        (zero_extend:SI (reg/v:HI 23))) -1 (nil)
    (nil))

and after it we have:

(insn 6 4 7 (set (reg/v:HI 21)
        (subreg:HI (reg:SI 22) 0)) 57 {movhi+1} (nil)
    (nil))

(insn 16 10 18 (set (mem:HI (symbol_ref:SI ("c")))
        (subreg:HI (reg:SI 22) 0)) 57 {movhi+1} (nil)
    (nil))

(insn 18 16 20 (set (reg:SI 24)
        (zero_extend:SI (reg/v:HI 21))) 85 {zero_extendhisi2} (nil)
    (nil))

It appears that CSE changed (reg/v:HI 23) in insn 16 to
(subreg:HI (reg:SI 22) 0) yet it did not perform this
same substitution in insn 18.  I would have expected
the same substitution in both places.

-- 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]