[Patch, AArch64] Relax CANNOT_CHANGE_MODE_CLASS.

Richard Earnshaw rearnsha@arm.com
Fri Jan 17 16:01:00 GMT 2014


On 16/01/14 18:22, Tejas Belagod wrote:
> 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.
> 
> 

OK.

R.




More information about the Gcc-patches mailing list