This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Possible CSE quirk involving SUBREG on the i386
- To: law at cygnus dot com
- Subject: Re: Possible CSE quirk involving SUBREG on the i386
- From: john at feith dot com (John Wehle)
- Date: Tue, 30 Jun 1998 16:51:10 -0400
- cc: egcs at cygnus dot com
> 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 | |
-------------------------------------------------------------------------