Add check_effective_target_autoincdec.
authorWilco Dijkstra <wdijkstr@arm.com>
Mon, 14 Aug 2017 11:18:50 +0000 (11:18 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Mon, 14 Aug 2017 11:18:50 +0000 (11:18 +0000)
Add check_effective_target_autoincdec that returns true if a target
runs the auto_inc_dec optimization pass.

    gcc/
* doc/sourcebuild.texi (autoincdec): Add autoincdec description.

    gcc/testsuite/
PR middle-end/46932
* gcc.dg/pr46932.c: Use dg-require-effective-target autoincdec.
* lib/target-supports.exp: Add check_effective_target_autoincdec.

From-SVN: r251087

gcc/ChangeLog
gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr46932.c
gcc/testsuite/lib/target-supports.exp

index 5fe0a90a15c30d9e51a78a31e775f22c10ce32a0..19bb575bf8f8b171ae4a3c89e864182a148fcb40 100644 (file)
@@ -1,3 +1,8 @@
+2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       PR middle-end/46932
+       * doc/sourcebuild.texi (autoincdec): Add autoincdec description.
+
 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
 
        PR target/81754
index 85af8778167ba6e41f2007bda5fbae80bcf8856e..e6313dc031ef5b2b5a72180bccf1e876812efe48 100644 (file)
@@ -1846,6 +1846,9 @@ PowerPC target supports executing VSX instructions (ISA 2.06).
 
 @c Please keep this table sorted alphabetically.
 @table @code
+@item autoincdec
+Target supports autoincrement/decrement addressing.
+
 @item avx
 Target supports compiling @code{avx} instructions.
 
index b6f6f1d01e9e1b377a3d65bb894224acfef3ec24..8995806e289aca47c4aac786f1fb9e983b5f64b1 100644 (file)
@@ -1,3 +1,9 @@
+2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       PR middle-end/46932
+       * gcc.dg/pr46932.c: Use dg-require-effective-target autoincdec.
+       * lib/target-supports.exp: Add check_effective_target_autoincdec.
+
 2017-08-14  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
        * gcc.target/aarch64/dbl_mov_immediate_1.c: Add
index 4eb1a99e1bd9403f8b1c5d0d71ef731ad4a65128..2b39990d036035d22e226b98351a4900a5dbb309 100644 (file)
@@ -1,7 +1,5 @@
 /* { dg-options "-O2 -fdump-rtl-auto_inc_dec" } */
-
-/* Build on targets which have pre increment.  */
-/* { dg-do compile { target aarch64*-*-* arm*-*-* rs6000-*-* powerpc*-*-* arc*-*-* m32r-*-* tic6x-*-* } } */
+/* { dg-require-effective-target autoincdec } */
 
 /* Check that accesses based on the frame pointer do not
    use auto increment.  */
index 5a6562794b2bdd5f370fc5b26d6887777f02779a..5219fbf4671e83a6fa7affdab926115e8a23f9cb 100644 (file)
@@ -8482,3 +8482,18 @@ proc check_effective_target_arm_coproc4_ok { } {
     return [check_cached_effective_target arm_coproc4_ok \
                check_effective_target_arm_coproc4_ok_nocache]
 }
+
+# Return 1 if the target supports the auto_inc_dec optimization pass.
+proc check_effective_target_autoincdec { } {
+    if { ![check_no_compiler_messages auto_incdec assembly { void f () { }
+        } "-O2 -fdump-rtl-auto_inc_dec" ] } {
+      return 0
+    }
+
+    set dumpfile [glob -nocomplain "auto_incdec[pid].c.\[0-9\]\[0-9\]\[0-9\]r.auto_inc_dec"]
+    if { [file exists $dumpfile ] } {
+       file delete $dumpfile
+       return 1
+    }
+    return 0
+}