aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2014-12-11 15:29:14 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2014-12-11 15:29:14 +0100
commit08e39a540603d6a41caacdc340015c063997b2a2 (patch)
tree98e004fc0e6b770f8a349e3f46dd33b789887427
parent26a4d424e19c57db7055f134eff87f26fa61cae5 (diff)
downloadgcc-08e39a540603d6a41caacdc340015c063997b2a2.zip
gcc-08e39a540603d6a41caacdc340015c063997b2a2.tar.gz
gcc-08e39a540603d6a41caacdc340015c063997b2a2.tar.bz2
combine.c (try_combine): Do not allow combining a PARALLEL I2 with a register move I3 if that I2 is an asm.
* combine.c (try_combine): Do not allow combining a PARALLEL I2 with a register move I3 if that I2 is an asm. From-SVN: r218623
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/combine.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5301470..fa79ce9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2014-12-11 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * combine.c (try_combine): Do not allow combining a PARALLEL I2
+ with a register move I3 if that I2 is an asm.
+
2014-12-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm_neon.h (vrndqn_f32): Rename to...
diff --git a/gcc/combine.c b/gcc/combine.c
index 9ed03be..c95b493 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -2716,6 +2716,13 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
SET_DEST (XVECEXP (p2, 0, i))))
break;
+ /* Make sure this PARALLEL is not an asm. We do not allow combining
+ that usually (see can_combine_p), so do not here either. */
+ for (i = 0; i < XVECLEN (p2, 0); i++)
+ if (GET_CODE (XVECEXP (p2, 0, i)) == SET
+ && GET_CODE (SET_SRC (XVECEXP (p2, 0, i))) == ASM_OPERANDS)
+ break;
+
if (i == XVECLEN (p2, 0))
for (i = 0; i < XVECLEN (p2, 0); i++)
if (GET_CODE (XVECEXP (p2, 0, i)) == SET