[Patch, AArch64] Relax CANNOT_CHANGE_MODE_CLASS.
Fri Jan 17 16:01:00 GMT 2014
On 16/01/14 18:22, Tejas Belagod wrote:
> Tejas Belagod wrote:
>> Tejas Belagod wrote:
>>> 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.
>>> Tested on aarch64-none-elf and aarch64_be-none-elf. OK for trunk?
>>> Tejas Belagod
>>> 2013-11-28 Tejas Belagod <firstname.lastname@example.org>
>>> * config/aarch64/aarch64-protos.h (aarch64_cannot_change_mode_class):
>>> * 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.
>> 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?
> 2014-01-16 Tejas Belagod <email@example.com>
> * 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.
More information about the Gcc-patches