aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTejas Belagod <tejas.belagod@arm.com>2024-09-02 20:53:42 +0530
committerTejas Belagod <tejas.belagod@arm.com>2024-11-12 15:19:34 +0530
commita552a808f004c90d6f880f296041d674bdc27eda (patch)
tree8d94d25d46326ed1654988d9faa297181eec6c0d /gcc
parent9a62c1495891032922af5bf9bd1906999cf63605 (diff)
downloadgcc-a552a808f004c90d6f880f296041d674bdc27eda.zip
gcc-a552a808f004c90d6f880f296041d674bdc27eda.tar.gz
gcc-a552a808f004c90d6f880f296041d674bdc27eda.tar.bz2
rtl: Validate subreg info when optimizing vec_select.
When optimizing for NOPs in case of overlapping regs in VEC_SELECT expressions, validate subreg data before using simplify_subreg_regno. There is no real SUBREG rtx here, but a pseudo subreg call to check if subregs are possible. gcc/ChangeLog: * rtlanal.cc (set_noop_p): Validate subreg constraints before checking for overlapping regs using simplify_subreg_regno.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rtlanal.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/rtlanal.cc b/gcc/rtlanal.cc
index cb0c0c0..b58401e 100644
--- a/gcc/rtlanal.cc
+++ b/gcc/rtlanal.cc
@@ -1686,6 +1686,7 @@ set_noop_p (const_rtx set)
}
return
REG_CAN_CHANGE_MODE_P (REGNO (dst), GET_MODE (src0), GET_MODE (dst))
+ && validate_subreg (GET_MODE (dst), GET_MODE (src0), src0, offset)
&& simplify_subreg_regno (REGNO (src0), GET_MODE (src0),
offset, GET_MODE (dst)) == (int) REGNO (dst);
}