This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Paradoxical subreg questions
- To: amylaar at cygnus dot co dot uk
- Subject: Re: Paradoxical subreg questions
- From: John Wehle <john at feith dot com>
- Date: Wed, 12 Jan 2000 17:01:31 -0500 (EST)
- CC: gcc at gcc dot gnu dot org
>> 2) What does:
>>
>> (set (subreg:DI (reg:SI 76) 0) (reg:DI 77))
>>
>> mean and how does it differ from:
>>
>> (set (reg:SI 76)) (truncate:SI (reg:DI 77))
>
> It means the same thing, but the former can be used in a DImode insn,
> while the latter is SImode, and a truncate will rarely - if at all -
> be generated by the optimizers. Generating subregs is much more common.
> The DImode form will require register allocation to provide a DImode hard
> register, unless the insn can be transformed to an SImode one before
> reloading.
Are the other bits of the DImode hard register assumed clobbered by the
set? In other words:
(set (subreg:DI (reg:SI 76) 0) (reg:DI 77))
implies:
(clobber (reg:DI 76))
prior to setting the SImode bits equal to (truncate:SI (reg:DI 77))?
-- John
-------------------------------------------------------------------------
| Feith Systems | Voice: 1-215-646-8000 | Email: john@feith.com |
| John Wehle | Fax: 1-215-540-5495 | |
-------------------------------------------------------------------------