aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2018-02-09 11:42:34 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2018-02-09 11:42:34 +0000
commitc704706201e54b922001b86ecfd81df60772563f (patch)
tree6d08d7278be77a7692b7ea3ef83092285ecfc894
parent0805a34d5f2a42052452ccc3ea45fde7975ff417 (diff)
downloadgcc-c704706201e54b922001b86ecfd81df60772563f.zip
gcc-c704706201e54b922001b86ecfd81df60772563f.tar.gz
gcc-c704706201e54b922001b86ecfd81df60772563f.tar.bz2
S/390: Fix PR84295
gcc/ChangeLog: 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com> PR target/PR84295 * config/s390/s390.c (s390_set_current_function): Invoke s390_indirect_branch_settings also if fndecl didn't change. gcc/testsuite/ChangeLog: 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com> PR target/PR84295 * gcc.target/s390/pr84295.c: New test. From-SVN: r257522
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/s390/pr84295.c14
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fc3d80c..7a01d21 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ PR target/PR84295
+ * config/s390/s390.c (s390_set_current_function): Invoke
+ s390_indirect_branch_settings also if fndecl didn't change.
+
2018-02-09 Alexandre Oliva <aoliva@redhat.com>
* config/rs6000/rs6000.md (blockage): Set length to zero.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 62a60e2..298fdd1 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -16135,7 +16135,10 @@ s390_set_current_function (tree fndecl)
several times in the course of compiling a function, and we don't want to
slow things down too much or call target_reinit when it isn't safe. */
if (fndecl == s390_previous_fndecl)
- return;
+ {
+ s390_indirect_branch_settings (fndecl);
+ return;
+ }
tree old_tree;
if (s390_previous_fndecl == NULL_TREE)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ff8136e..25c8afc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
+ PR target/PR84295
+ * gcc.target/s390/pr84295.c: New test.
+
2018-02-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/77522
diff --git a/gcc/testsuite/gcc.target/s390/pr84295.c b/gcc/testsuite/gcc.target/s390/pr84295.c
new file mode 100644
index 0000000..4da43c3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/s390/pr84295.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -march=z900 -fgnu89-inline --save-temps -mfunction-return-reg=thunk -mindirect-branch-table" } */
+
+extern void foo (void);
+extern __inline void foo (void) {}
+void foo (void) {}
+
+/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */
+/* { dg-final { scan-assembler "ex\t" } } */
+
+/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */
+/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */
+/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */
+/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */