S/390: Fix __builtin_tbeginc signature
authorAndreas Krebbel <krebbel@linux.ibm.com>
Tue, 5 Jun 2018 07:22:24 +0000 (07:22 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Tue, 5 Jun 2018 07:22:24 +0000 (07:22 +0000)
The builtin was accidentally defined to have an integer return value.
Fixed with the attached patch.

gcc/ChangeLog:

2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390-builtin-types.def: Add void function type.
* config/s390/s390-builtins.def: Use the function type for the
tbeginc builtin.

gcc/testsuite/ChangeLog:

2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/htm-builtins-compile-4.c: New test.

From-SVN: r261183

gcc/ChangeLog
gcc/config/s390/s390-builtin-types.def
gcc/config/s390/s390-builtins.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c [new file with mode: 0644]

index ebf9dc43ee6a46da7435a62561950c304647d395..336620f3d5ea1ea3b2faef43d4a7de50ade73939 100644 (file)
@@ -1,3 +1,9 @@
+2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       * config/s390/s390-builtin-types.def: Add void function type.
+       * config/s390/s390-builtins.def: Use the function type for the
+       tbeginc builtin.
+
 2018-06-04  Jim Wilson  <jimw@sifive.com>
 
        * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
index 260ad93a90b94b99fea45ca3ba967da38c4688b5..2acc55fe0af5351abb5929ed8192042e3d3deffa 100644 (file)
@@ -124,6 +124,7 @@ DEF_OPAQUE_VECTOR_TYPE (BT_BV8HI, BT_BSHORT, 8)
 DEF_OPAQUE_VECTOR_TYPE (BT_OV2DI, BT_LONGLONG, 2)
 DEF_FN_TYPE_0 (BT_FN_INT, BT_INT)
 DEF_FN_TYPE_0 (BT_FN_UINT, BT_UINT)
+DEF_FN_TYPE_0 (BT_FN_VOID, BT_VOID)
 DEF_FN_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
 DEF_FN_TYPE_1 (BT_FN_INT_VOIDPTR, BT_INT, BT_VOIDPTR)
 DEF_FN_TYPE_1 (BT_FN_OV4SI_INT, BT_OV4SI, BT_INT)
index cf174b56187a725bb7de81c2b431a34e14828a8d..49caa01245db913cee96e7ff41336840757fc0ab 100644 (file)
    flags: Flags applying to all its variants should be mentioned in the OB_DEF line instead.  */
 
 
-B_DEF      (tbeginc,                    tbeginc,            0,                  B_HTM,              0,                  BT_FN_INT)
+B_DEF      (tbeginc,                    tbeginc,            0,                  B_HTM,              0,                  BT_FN_VOID)
 B_DEF      (tbegin,                     tbegin,             returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR)
 B_DEF      (tbegin_nofloat,             tbegin_nofloat,     returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR)
 B_DEF      (tbegin_retry,               tbegin_retry,       returns_twice_attr, B_HTM,              0,                  BT_FN_INT_VOIDPTR_INT)
index 0d7bd34864b0c99b41888e0af28c2732e6a78c78..1fdae087b11871f4c6caa1f1ce7ebf3d26c312e9 100644 (file)
@@ -1,3 +1,7 @@
+2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+       * gcc.target/s390/htm-builtins-compile-4.c: New test.
+
 2018-06-04  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc.dg/store_merging_21.c: New test.
diff --git a/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c b/gcc/testsuite/gcc.target/s390/htm-builtins-compile-4.c
new file mode 100644 (file)
index 0000000..c3866bd
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -march=zEC12 -mzarch" } */
+
+/* A bug in the builtin definition made__builtin_tbeginc to have an
+   integer return argument.  */
+void
+must_not_compile1 (void)
+{
+  int rc = __builtin_tbeginc (); /* { dg-error "void value not ignored as it ought to be" } */
+}