Hi all, this patch is to fix a force_reg returned rtx potentially modified in `aarch64_general_expand_builtin`.
Bootstrapped and reg-tested on aarch64-none-linux-gnu. Okay for trunk? Thanks Andrea 2020-11-06 Andrea Corallo <andrea.cora...@arm.com> * config/aarch64/aarch64-builtins.c (aarch64_expand_fcmla_builtin): Do not alter force_reg returned register.
>From 203d9688cee6298a10f14a79e6ca58b2fadeafc9 Mon Sep 17 00:00:00 2001 From: Andrea Corallo <andrea.cora...@arm.com> Date: Fri, 6 Nov 2020 16:17:32 +0000 Subject: [PATCH] aarch64: Do not alter force_reg returned register expanding fcmla 2020-11-06 Andrea Corallo <andrea.cora...@arm.com> * config/aarch64/aarch64-builtins.c (aarch64_expand_fcmla_builtin): Do not alter force_reg returned register. --- gcc/config/aarch64/aarch64-builtins.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index 9d5e8c75c55..3a63107d6ff 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -1856,10 +1856,10 @@ aarch64_expand_fcmla_builtin (tree exp, rtx target, int fcode) only need to know the order in a V2mode. */ lane_idx = aarch64_endian_lane_rtx (V2DImode, lane); - if (!target) + if (!target + || !REG_P (target) + || GET_MODE (target) != d->mode) target = gen_reg_rtx (d->mode); - else - target = force_reg (d->mode, target); rtx pat = NULL_RTX; -- 2.20.1