aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.ibm.com>2020-02-03 15:50:39 -0500
committerMichael Meissner <meissner@linux.ibm.com>2020-02-03 15:50:39 -0500
commit19e43cbce353b63a05c3b7c39d83a2e32c9f911f (patch)
treeb2b012380ba62450bb688e4bcbf40c5817de9160 /gcc
parentd60c25fa02044181196768fa8b63980e0f535c38 (diff)
downloadgcc-19e43cbce353b63a05c3b7c39d83a2e32c9f911f.zip
gcc-19e43cbce353b63a05c3b7c39d83a2e32c9f911f.tar.gz
gcc-19e43cbce353b63a05c3b7c39d83a2e32c9f911f.tar.bz2
Add some gcc_asserts for vector extract processing.
2020-02-03 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some gcc_asserts.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4ded82c..b66cec2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2020-02-03 Michael Meissner <meissner@linux.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add some
+ gcc_asserts.
+
2020-02-03 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/constraints.md: Improve documentation.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index fc36bb6..8f72350 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -6768,6 +6768,9 @@ rs6000_adjust_vec_address (rtx scalar_reg,
rtx new_addr;
bool valid_addr_p;
+ gcc_assert (!reg_mentioned_p (base_tmp, addr));
+ gcc_assert (!reg_mentioned_p (base_tmp, element));
+
/* Vector addresses should not have PRE_INC, PRE_DEC, or PRE_MODIFY. */
gcc_assert (GET_RTX_CLASS (GET_CODE (addr)) != RTX_AUTOINC);
@@ -6777,6 +6780,10 @@ rs6000_adjust_vec_address (rtx scalar_reg,
element_offset = GEN_INT (INTVAL (element) * scalar_size);
else
{
+ /* All insns should use the 'Q' constraint (address is a single register)
+ if the element number is not a constant. */
+ gcc_assert (REG_P (addr) || SUBREG_P (addr));
+
int byte_shift = exact_log2 (scalar_size);
gcc_assert (byte_shift >= 0);