aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/rtlanal.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f5ab2f3..95e3dc5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2016-11-15 Richard Sandiford <richard.sandiford@arm.com>
+ Alan Hayward <alan.hayward@arm.com>
+ David Sherwood <david.sherwood@arm.com>
+
+ * rtlanal.c (num_sign_bit_copies1): Calculate bitwidth after
+ handling VOIDmode.
+
2016-11-15 Matthias Klose <doko@ubuntu.com>
* doc/install.texi: Remove references to gcj/libjava.
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 4617e8e..e08f2be 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -4795,7 +4795,6 @@ num_sign_bit_copies1 (const_rtx x, machine_mode mode, const_rtx known_x,
unsigned int known_ret)
{
enum rtx_code code = GET_CODE (x);
- unsigned int bitwidth = GET_MODE_PRECISION (mode);
machine_mode inner_mode;
int num0, num1, result;
unsigned HOST_WIDE_INT nonzero;
@@ -4811,7 +4810,8 @@ num_sign_bit_copies1 (const_rtx x, machine_mode mode, const_rtx known_x,
|| VECTOR_MODE_P (GET_MODE (x)) || VECTOR_MODE_P (mode))
return 1;
- /* For a smaller object, just ignore the high bits. */
+ /* For a smaller mode, just ignore the high bits. */
+ unsigned int bitwidth = GET_MODE_PRECISION (mode);
if (bitwidth < GET_MODE_PRECISION (GET_MODE (x)))
{
num0 = cached_num_sign_bit_copies (x, GET_MODE (x),