diff mbox series

rs6000: Fix safe-indirect-jump-[18].c

Message ID 094cb176f757b333c6a3e740bac8c80b7b547a5f.1516855807.git.segher@kernel.crashing.org
State New
Headers show
Series rs6000: Fix safe-indirect-jump-[18].c | expand

Commit Message

Segher Boessenkool Jan. 26, 2018, 7:27 p.m. UTC
Thist patch merges the safe-indirect-jump-1.c and -8.c testcases,
since they do the same thing.  On the 64-bit and AIX ABIs the indirect
call is not a sibcall, since there is code generated after the call
(the restore of r2).  On the 32-bit non-AIX ABIs it is a sibcall.

Tested on powerpc64-linux {-m32,-m64}, and on powerpc-ibm-aix7.1.3.0 .
Is this okay for trunk and 7 branch?


Segher


2018-01-26  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/testsuite/
	* gcc.target/powerpc/safe-indirect-jump-1.c: Build on all targets.
	Make expected output depend on whether we expect sibcalls or not.
	* gcc.target/powerpc/safe-indirect-jump-8.c: Delete (merged into
	safe-indirect-jump-1.c).

---
 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c | 10 ++++++++--
 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c | 16 ----------------
 2 files changed, 8 insertions(+), 18 deletions(-)
 delete mode 100644 gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c

Comments

David Edelsohn Jan. 26, 2018, 8:41 p.m. UTC | #1
On Fri, Jan 26, 2018 at 2:27 PM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> Thist patch merges the safe-indirect-jump-1.c and -8.c testcases,
> since they do the same thing.  On the 64-bit and AIX ABIs the indirect
> call is not a sibcall, since there is code generated after the call
> (the restore of r2).  On the 32-bit non-AIX ABIs it is a sibcall.
>
> Tested on powerpc64-linux {-m32,-m64}, and on powerpc-ibm-aix7.1.3.0 .
> Is this okay for trunk and 7 branch?
>
>
> Segher
>
>
> 2018-01-26  Segher Boessenkool  <segher@kernel.crashing.org>
>
> gcc/testsuite/
>         * gcc.target/powerpc/safe-indirect-jump-1.c: Build on all targets.
>         Make expected output depend on whether we expect sibcalls or not.
>         * gcc.target/powerpc/safe-indirect-jump-8.c: Delete (merged into
>         safe-indirect-jump-1.c).

Okay.

Thanks, David
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c b/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
index 99cfab2..d1ab83a 100644
--- a/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-1.c
@@ -1,4 +1,4 @@ 
-/* { dg-do compile { target { lp64 } } } */
+/* { dg-do compile } */
 /* { dg-additional-options "-mno-speculate-indirect-jumps" } */
 
 /* Test for deliberate misprediction of indirect calls.  */
@@ -11,4 +11,10 @@  int bar ()
 }
 
 /* { dg-final { scan-assembler "crset 2" } } */
-/* { dg-final { scan-assembler "beqctrl-" } } */
+
+/* The AIX and ELFv2 ABIs don't allow a sibcall here.  */
+/* { dg-final { scan-assembler "beqctrl-" { target { lp64 || { powerpc*-*-aix* } } } } } */
+
+/* The other ABIs do allow a sibcall.  */
+/* { dg-final { scan-assembler "beqctr-" { target { ilp32 && !powerpc*-*-aix* } } } } */
+/* { dg-final { scan-assembler {b \$} { target { ilp32 && !powerpc*-*-aix* } } } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c b/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c
deleted file mode 100644
index 0a6f231..0000000
--- a/gcc/testsuite/gcc.target/powerpc/safe-indirect-jump-8.c
+++ /dev/null
@@ -1,16 +0,0 @@ 
-/* { dg-do compile { target { ilp32 } } } */
-/* { dg-skip-if "" { powerpc*-*-aix* } } */
-/* { dg-additional-options "-O2 -mno-speculate-indirect-jumps" } */
-
-/* Test for deliberate misprediction of -m32 sibcalls.  */
-
-extern int (*f)();
-
-int bar ()
-{
-  return (*f) ();
-}
-
-/* { dg-final { scan-assembler "crset 2" } } */
-/* { dg-final { scan-assembler "beqctr-" } } */
-/* { dg-final { scan-assembler {b \$} } } */