summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2012-10-31 08:01:23 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2012-10-31 08:01:23 +0000
commit7ae6664baa103b7c1e8628af77978c293549f758 (patch)
tree3d8ccdacc4e644aca41e23399c1679d3f87f66ce
parent8e2326a23bb18caa982475742a6a19c8a26fbf36 (diff)
downloadgcc-7ae6664baa103b7c1e8628af77978c293549f758.tar.gz
combine.c (simplify_comparison): If BITS_BIG_ENDIAN...
gcc/ * combine.c (simplify_comparison): If BITS_BIG_ENDIAN, always assume that zero_extracts of const_ints are doing word-sized extractions. From-SVN: r193026
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/combine.c12
2 files changed, 6 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5b6fd01d85f..fa4d4ba0b4e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2012-10-31 Richard Sandiford <rdsandiford@googlemail.com>
+ * combine.c (simplify_comparison): If BITS_BIG_ENDIAN, always assume
+ that zero_extracts of const_ints are doing word-sized extractions.
+
+2012-10-31 Richard Sandiford <rdsandiford@googlemail.com>
+
* combine.c (make_extraction): Remove dead wanted_inner_mode-
and pos_rtx-related code.
diff --git a/gcc/combine.c b/gcc/combine.c
index e9d0a45d633..5bbf0bde937 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -11154,17 +11154,7 @@ simplify_comparison (enum rtx_code code, rtx *pop0, rtx *pop1)
&& (i = exact_log2 (UINTVAL (XEXP (op0, 0)))) >= 0)
{
if (BITS_BIG_ENDIAN)
- {
- enum machine_mode new_mode
- = mode_for_extraction (EP_extzv, 1);
- if (new_mode == MAX_MACHINE_MODE)
- i = BITS_PER_WORD - 1 - i;
- else
- {
- mode = new_mode;
- i = (GET_MODE_PRECISION (mode) - 1 - i);
- }
- }
+ i = BITS_PER_WORD - 1 - i;
op0 = XEXP (op0, 2);
op1 = GEN_INT (i);