[Patch, AArch64] Relax CANNOT_CHANGE_MODE_CLASS.

Tejas Belagod tbelagod@arm.com
Thu Jan 16 18:22:00 GMT 2014


Tejas Belagod wrote:
> Tejas Belagod wrote:
>> Hi,
>>
>> Currently, CANNOT_CHANGE_MODE_CLASS is too restrictive wrt the mode-changes it 
>> allows on FPREGs - it allows none at the moment. In fact, there are many mode 
>> changes that are safe and can be allowed. For example, in a pattern like:
>>
>>      (subreg:SF (reg:V4SF v0) 0)
>>
>> it is legal to reduce this to
>>
>>       (reg:SF v0)
>>
>> The attached patch helps parts of rtlanal.c make such decisions(eg. 
>> simplify_subreg_regno).
>>
>> Tested on aarch64-none-elf and aarch64_be-none-elf. OK for trunk?
>>
>> Thanks,
>> Tejas Belagod
>> ARM.
>>
>> Changelog:
>>
>> 2013-11-28  Tejas Belagod  <tejas.belagod@arm.com>
>>
>> gcc/
>> 	* config/aarch64/aarch64-protos.h (aarch64_cannot_change_mode_class):
>> 	Declare.
>> 	* config/aarch64/aarch64.c (aarch64_cannot_change_mode_class): New.
>> 	* config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Change to call
>> 	backend function aarch64_cannot_change_mode_class.
>>
> 
> Hi,
> 
> I'm testing a patch that is more general than the change presented here for 
> CANNOT_CHANGE_MODE_CLASS. This patch is now defunct.

Ideally CANNOT_CHANGE_MODE_CLASS should be undefined, but that exposed a bug in 
LRA and subregs in general.

Until http://gcc.gnu.org/ml/gcc/2013-12/msg00086.html  and 
http://gcc.gnu.org/ml/gcc/2014-01/msg00087.html are resolved, we have to run 
with the attached patch. It is a slightly modified version of the initial patch.

Tested on aarch64-none-elf and aarch64_be-none-elf. OK for trunk?

Thanks,
Tejas.

2014-01-16  Tejas Belagod  <tejas.belagod@arm.com>

gcc/
	* config/aarch64/aarch64-protos.h
	(aarch64_cannot_change_mode_class_ptr): Declare.
	* config/aarch64/aarch64.c (aarch64_cannot_change_mode_class,
	aarch64_cannot_change_mode_class_ptr): New.
	* config/aarch64/aarch64.h (CANNOT_CHANGE_MODE_CLASS): Change to call
	backend hook aarch64_cannot_change_mode_class.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mode-class-reg-2.txt
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20140116/1b678e32/attachment.txt>


More information about the Gcc-patches mailing list