combine.c (make_extraction): Handle TRUNCATEd INNERs.
authorRichard Sandiford <rdsandiford@googlemail.com>
Sun, 18 Nov 2012 17:32:04 +0000 (17:32 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Sun, 18 Nov 2012 17:32:04 +0000 (17:32 +0000)
gcc/
* combine.c (make_extraction): Handle TRUNCATEd INNERs.

From-SVN: r193600

gcc/ChangeLog
gcc/combine.c

index b9d7a75653fc236006793b6bdd19082f92bdbab8..a64c25f8cbb7373e1c63edbc245a018d5496339d 100644 (file)
@@ -1,3 +1,7 @@
+2012-11-18  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * combine.c (make_extraction): Handle TRUNCATEd INNERs.
+
 2012-11-18  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * expr.c (expand_assignment): Don't set MEM_KEEP_ALIAS_SET_P here.
index 5bf08ff2fb6d34580ffceac39656190b0f730581..a3583e2013ad99b98be53e1d694952fecabe7a90 100644 (file)
@@ -7022,6 +7022,8 @@ make_extraction (enum machine_mode mode, rtx inner, HOST_WIDE_INT pos,
       if (new_rtx != 0)
        return gen_rtx_ASHIFT (mode, new_rtx, XEXP (inner, 1));
     }
+  else if (GET_CODE (inner) == TRUNCATE)
+    inner = XEXP (inner, 0);
 
   inner_mode = GET_MODE (inner);