aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
diff options
context:
space:
mode:
authorMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-03-07 14:12:04 +0000
committerMaxim Kuvyrkov <maxim.kuvyrkov@linaro.org>2018-03-08 09:47:33 +0000
commit120525557a2dce8d4634456016a0d3943fcb8eb2 (patch)
tree4fe5ed0798b05eff3371d3dc06554c2930507a15 /gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
parentf7cd0a49635b07f902e4ce8f5323b894f0baef20 (diff)
Merge branches/gcc-7-branch rev 258315 .
Change-Id: I651281d13f040cd2f9f911c460a26b61fe82b136
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c')
-rw-r--r--gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
new file mode 100644
index 00000000000..826425a5115
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mno-indirect-branch-register -mfunction-return=keep -mindirect-branch=thunk-extern -fno-pic" } */
+
+typedef void (*dispatch_t)(long offset);
+
+dispatch_t dispatch[256];
+
+void
+male_indirect_jump (long offset)
+{
+ dispatch[offset](offset);
+}
+
+/* { dg-final { scan-assembler "mov(?:l|q)\[ \t\]*_?dispatch" { target *-*-linux* } } } */
+/* { dg-final { scan-assembler "jmp\[ \t\]*__x86_indirect_thunk_(r|e)ax" } } */
+/* { dg-final { scan-assembler-not {\t(lfence|pause)} } } */
+/* { dg-final { scan-assembler-not "jmp\[ \t\]*\.LIND" } } */
+/* { dg-final { scan-assembler-not "call\[ \t\]*\.LIND" } } */