[Patch, AArch64] Relax CANNOT_CHANGE_MODE_CLASS.
Thu Jan 16 18:22:00 GMT 2014
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 <email@example.com>
>> * 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 <firstname.lastname@example.org>
* config/aarch64/aarch64.c (aarch64_cannot_change_mode_class,
* 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...
More information about the Gcc-patches