]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: [multiple changes]
authorThomas Preud'homme <thomas.preudhomme@arm.com>
Wed, 7 Dec 2016 17:51:00 +0000 (17:51 +0000)
committerThomas Preud'homme <thopre01@gcc.gnu.org>
Wed, 7 Dec 2016 17:51:00 +0000 (17:51 +0000)
2016-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    Backport from mainline
    2016-11-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/
    * config/arm/arm.md (arm_addsi3): Add alternative for addition of
    general register with general register or ARM constant into SP
    register.

    gcc/testsuite/
    * gcc.target/arm/empty_fiq_handler.c: New test.

    Backport from mainline
    2016-11-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * gcc.target/arm/empty_fiq_handler.c: Skip if -mthumb is passed in and
    target is Thumb-only.

From-SVN: r243373

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

index 7a2498e3dedf2d3fb9a67370a7a84d3142c4728d..340a755bbc0c5eab18e3b952ee6dd9ace5b2afcd 100644 (file)
@@ -1,3 +1,12 @@
+2016-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       Backport from mainline
+       2016-11-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * config/arm/arm.md (arm_addsi3): Add alternative for addition of
+       general register with general register or ARM constant into SP
+       register.
+
 2016-12-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        Backport from mainline
index 32e015d44b3503612b5f29d895880cb52e523817..faa08e47b6b1b21de7fa11cc3f878003bf6ee081 100644 (file)
 ;;  (plus (reg rN) (reg sp)) into (reg rN).  In this case reload will
 ;; put the duplicated register first, and not try the commutative version.
 (define_insn_and_split "*arm_addsi3"
-  [(set (match_operand:SI          0 "s_register_operand" "=rk,l,l ,l ,r ,k ,r,r ,k ,r ,k,k,r ,k ,r")
-        (plus:SI (match_operand:SI 1 "s_register_operand" "%0 ,l,0 ,l ,rk,k ,r,rk,k ,rk,k,r,rk,k ,rk")
-                 (match_operand:SI 2 "reg_or_int_operand" "rk ,l,Py,Pd,rI,rI,k,Pj,Pj,L ,L,L,PJ,PJ,?n")))]
+  [(set (match_operand:SI          0 "s_register_operand" "=rk,l,l ,l ,r ,k ,r,k ,r ,k ,r ,k,k,r ,k ,r")
+       (plus:SI (match_operand:SI 1 "s_register_operand" "%0 ,l,0 ,l ,rk,k ,r,r ,rk,k ,rk,k,r,rk,k ,rk")
+                (match_operand:SI 2 "reg_or_int_operand" "rk ,l,Py,Pd,rI,rI,k,rI,Pj,Pj,L ,L,L,PJ,PJ,?n")))]
   "TARGET_32BIT"
   "@
    add%?\\t%0, %0, %2
    add%?\\t%0, %1, %2
    add%?\\t%0, %1, %2
    add%?\\t%0, %2, %1
+   add%?\\t%0, %1, %2
    addw%?\\t%0, %1, %2
    addw%?\\t%0, %1, %2
    sub%?\\t%0, %1, #%n2
                      operands[1], 0);
   DONE;
   "
-  [(set_attr "length" "2,4,4,4,4,4,4,4,4,4,4,4,4,4,16")
+  [(set_attr "length" "2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,16")
    (set_attr "predicable" "yes")
-   (set_attr "predicable_short_it" "yes,yes,yes,yes,no,no,no,no,no,no,no,no,no,no,no")
-   (set_attr "arch" "t2,t2,t2,t2,*,*,*,t2,t2,*,*,a,t2,t2,*")
+   (set_attr "predicable_short_it" "yes,yes,yes,yes,no,no,no,no,no,no,no,no,no,no,no,no")
+   (set_attr "arch" "t2,t2,t2,t2,*,*,*,a,t2,t2,*,*,a,t2,t2,*")
    (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
                      (const_string "alu_imm")
                      (const_string "alu_sreg")))
index b73a8c241e63c4339b9e9784472e71a7634c4076..f602468145459e379f4e4e491b6118f57cc64358 100644 (file)
@@ -1,3 +1,16 @@
+2016-12-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       Backport from mainline
+       2016-11-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * gcc.target/arm/empty_fiq_handler.c: New test.
+
+       Backport from mainline
+       2016-11-21  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+
+       * gcc.target/arm/empty_fiq_handler.c: Skip if -mthumb is passed in and
+       target is Thumb-only.
+
 2016-12-04  Janus Weil  <janus@gcc.gnu.org>
 
        Backport from trunk
diff --git a/gcc/testsuite/gcc.target/arm/empty_fiq_handler.c b/gcc/testsuite/gcc.target/arm/empty_fiq_handler.c
new file mode 100644 (file)
index 0000000..8313f21
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-skip-if "" { ! arm_cortex_m } { "-mthumb" } } */
+
+/* Below code used to trigger an ICE due to missing constraints for
+   sp = fp + cst pattern.  */
+
+void fiq_handler (void) __attribute__((interrupt ("FIQ")));
+
+void
+fiq_handler (void)
+{
+}