aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Bergner <bergner@vnet.ibm.com>2015-08-03 16:11:20 -0500
committerPeter Bergner <bergner@gcc.gnu.org>2015-08-03 16:11:20 -0500
commitab977fd881b81c9a03ea709fee8b02fb34cd3897 (patch)
tree7b8244f2d74ee8e07f88bbb3416cf8e7786bbdcd
parentafed345982d5923b04d41885e868c9ca345ff3f9 (diff)
downloadgcc-ab977fd881b81c9a03ea709fee8b02fb34cd3897.zip
gcc-ab977fd881b81c9a03ea709fee8b02fb34cd3897.tar.gz
gcc-ab977fd881b81c9a03ea709fee8b02fb34cd3897.tar.bz2
htm.md (tabort.): Restrict the source operand to using a base register.
gcc/ * config/rs6000/htm.md (tabort.): Restrict the source operand to using a base register. gcc/testsuite/ * gcc.target/powerpc/htm-tabort-no-r0.c: New test. From-SVN: r226532
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/htm.md2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c12
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8e1df72..eb4a604 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-08-03 Peter Bergner <bergner@vnet.ibm.com>
+
+ * config/rs6000/htm.md (tabort.): Restrict the source operand to
+ using a base register.
+
2015-08-03 David Malcolm <dmalcolm@redhat.com>
* main.c (main): Pass in NULL for toplev's external_timer.
diff --git a/gcc/config/rs6000/htm.md b/gcc/config/rs6000/htm.md
index dbfd0db..cec2538 100644
--- a/gcc/config/rs6000/htm.md
+++ b/gcc/config/rs6000/htm.md
@@ -48,7 +48,7 @@
(define_insn "tabort"
[(set (match_operand:CC 1 "cc_reg_operand" "=x")
- (unspec_volatile:CC [(match_operand:SI 0 "gpc_reg_operand" "r")]
+ (unspec_volatile:CC [(match_operand:SI 0 "base_reg_operand" "b")]
UNSPECV_HTM_TABORT))]
"TARGET_HTM"
"tabort. %0"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 058c4ec..f34d9fd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-08-03 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/htm-tabort-no-r0.c: New test.
+
2015-08-03 David Malcolm <dmalcolm@redhat.com>
* jit.dg/test-benchmark.c (test_jit): Add param "timer" and use
diff --git a/gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c b/gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c
new file mode 100644
index 0000000..691e517
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/htm-tabort-no-r0.c
@@ -0,0 +1,12 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_htm_ok } */
+/* { dg-options "-O2 -mhtm -ffixed-r3 -ffixed-r4 -ffixed-r5 -ffixed-r6 -ffixed-r7 -ffixed-r8 -ffixed-r9 -ffixed-r10 -ffixed-r11 -ffixed-r12" } */
+
+/* { dg-final { scan-assembler-not "tabort\\.\[ \t\]0" } } */
+
+int
+foo (void)
+{
+ return __builtin_tabort (10);
+}