]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/52006 (ARM ICE with incorrectly peepholed tls_load_dot_plus_eight)
authorJakub Jelinek <jakub@redhat.com>
Thu, 9 Feb 2012 17:25:47 +0000 (18:25 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 9 Feb 2012 17:25:47 +0000 (18:25 +0100)
Backported from mainline
2012-01-28  Jakub Jelinek  <jakub@redhat.com>

PR target/52006
* config/arm/arm.md (pic_add_dot_plus_eight peephole2): Use
arm_general_register_operand predicate for operand 2 instead of
register_operand.

* gcc.target/arm/pr52006.c: New test.

From-SVN: r184057

gcc/ChangeLog
gcc/config/arm/arm.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr52006.c [new file with mode: 0644]

index a53cc30dae03fc5e9c7715c9e15ab3fbaa00db5b..a60ceb3456c97d9f9682a0f3c815b958ea4637e5 100644 (file)
@@ -1,6 +1,13 @@
 2012-02-09  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2012-01-28  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/52006
+       * config/arm/arm.md (pic_add_dot_plus_eight peephole2): Use
+       arm_general_register_operand predicate for operand 2 instead of
+       register_operand.
+
        2012-01-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR libmudflap/40778
index 6fc8d6061827ab91e06b5d535c3a9441f9424592..130053b0bdd8480bd68a46793aca25cba06a5810 100644 (file)
                    (const_int 8)
                    (match_operand 1 "" "")]
                   UNSPEC_PIC_BASE))
-   (set (match_operand:SI 2 "register_operand" "") (mem:SI (match_dup 0)))]
+   (set (match_operand:SI 2 "arm_general_register_operand" "")
+       (mem:SI (match_dup 0)))]
   "TARGET_ARM && peep2_reg_dead_p (2, operands[0])"
   [(set (match_dup 2)
        (mem:SI (unspec:SI [(match_dup 3)
index 9aaf833adb2525d7525b8fec51e62e359345f841..91e5f2210c308620733d198e45e62dda172c5355 100644 (file)
@@ -1,6 +1,11 @@
 2012-02-09  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2012-01-28  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/52006
+       * gcc.target/arm/pr52006.c: New test.
+
        2012-01-05  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/51767
diff --git a/gcc/testsuite/gcc.target/arm/pr52006.c b/gcc/testsuite/gcc.target/arm/pr52006.c
new file mode 100644 (file)
index 0000000..249470a
--- /dev/null
@@ -0,0 +1,19 @@
+/* PR target/52006 */
+/* { dg-do compile } */
+/* { dg-options "-march=armv7-a -mfloat-abi=hard -O2 -fPIC" } */
+
+unsigned long a;
+static int b;
+
+void
+foo (void)
+{
+  asm volatile ("" : "=r" (b));
+}
+
+void
+bar (float f)
+{
+  if (f < b / 100.0)
+    a = 1;
+}