Commit b7a0332c by Iain Sandoe Committed by Iain Sandoe

[objective-c/c++, testsuite] Fix stubify tests for -fnext-runtime.

These tests were broken in the first place, and more broken following
the change to drop pic symbol stubs unless the linker needs them.

Fixed to work for x86 as well as powerpc and amended the options to
force pic symbol stubs on.

gcc/testsuite/

2019-06-20  Iain Sandoe  <iain@sandoe.co.uk>

	* obj-c++.dg/stubify-1.mm: Adjust options and scan-asm checks.
	* obj-c++.dg/stubify-2.mm: Likewise.
	* objc.dg/stubify-1.m: Likewise.
	* objc.dg/stubify-2.m: Likewise.

From-SVN: r272518
parent 91bed1a1
2019-06-20 Iain Sandoe <iain@sandoe.co.uk>
* obj-c++.dg/stubify-1.mm: Adjust options and scan-asm checks.
* obj-c++.dg/stubify-2.mm: Likewise.
* objc.dg/stubify-1.m: Likewise.
* objc.dg/stubify-2.m: Likewise.
2019-06-20 Marek Polacek <polacek@redhat.com> 2019-06-20 Marek Polacek <polacek@redhat.com>
PR c++/87512 PR c++/87512
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
/* { dg-do compile { target *-*-darwin* } } */ /* { dg-do compile { target *-*-darwin* } } */
/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-require-effective-target ilp32 } */ /* { dg-require-effective-target ilp32 } */
/* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4" } */ /* { dg-options "-Os -mdynamic-no-pic -fno-exceptions -mmacosx-version-min=10.4 -mpic-symbol-stubs" } */
typedef struct objc_object { } *id ; typedef struct objc_object { } *id ;
int x = 41 ; int x = 41 ;
...@@ -32,8 +32,8 @@ extern "C" { ...@@ -32,8 +32,8 @@ extern "C" {
} }
@end @end
/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */ /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */ /* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */ /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */ /* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */ /* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
/* { dg-do compile { target *-*-darwin* } } */ /* { dg-do compile { target *-*-darwin* } } */
/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-require-effective-target ilp32 } */ /* { dg-require-effective-target ilp32 } */
/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4 -mpic-symbol-stubs" } */
typedef struct objc_object { } *id ; typedef struct objc_object { } *id ;
int x = 41 ; int x = 41 ;
...@@ -30,4 +30,10 @@ extern int bogonic (int, int, int) ; ...@@ -30,4 +30,10 @@ extern int bogonic (int, int, int) ;
/* Any symbol_ref of an un-stubified objc_msgSend is an error; look /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
for "objc_msgSend" in quotes, without the $stub suffix. */ for "objc_msgSend" in quotes, without the $stub suffix. */
/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */ /* { dg-final { scan-rtl-dump-not {symbol_ref.*"objc_msgSend"} "jump" { target powerpc*-*-darwin* } } } */
/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_Z7bogoniciii\n} } } */
/* { dg-final { scan-assembler {(bl|call)[ \t]+L__Z7bogoniciii\$stub\n} } } */
/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
/* { dg-do compile { target *-*-darwin* } } */ /* { dg-do compile { target *-*-darwin* } } */
/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-require-effective-target ilp32 } */ /* { dg-require-effective-target ilp32 } */
/* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4" } */ /* { dg-options "-Os -mdynamic-no-pic -mmacosx-version-min=10.4 -mpic-symbol-stubs" } */
typedef struct objc_object { } *id ; typedef struct objc_object { } *id ;
int x = 41 ; int x = 41 ;
...@@ -28,8 +28,8 @@ extern int bogonic (int, int, int) ; ...@@ -28,8 +28,8 @@ extern int bogonic (int, int, int) ;
} }
@end @end
/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_objc_msgSend\n" } } */ /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_objc_msgSend\\\$stub\n" } } */ /* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
/* { dg-final { scan-assembler-not "\(bl|call\)\[ \t\]+_bogonic\n" } } */ /* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
/* { dg-final { scan-assembler "\(bl|call\)\[ \t\]+L_bogonic\\\$stub\n" } } */ /* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
/* { dg-final { scan-assembler-not "\\\$non_lazy_ptr" } } */ /* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
/* All calls must be properly stubified, m32 only. */ /* All calls must be properly stubified, m32 only. */
/* Testcase extracted from TextEdit:Document.m. */ /* Testcase extracted from TextEdit:Document.m. */
/* { dg-do compile { target powerpc*-*-darwin* } } */ /* { dg-do compile { target *-*-darwin* } } */
/* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
/* { dg-require-effective-target ilp32 } */ /* { dg-require-effective-target ilp32 } */
/* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4" } */ /* { dg-options "-mdynamic-no-pic -fdump-rtl-jump -mmacosx-version-min=10.4 -mpic-symbol-stubs" } */
typedef struct objc_object { } *id ; typedef struct objc_object { } *id ;
int x = 41 ; int x = 41 ;
...@@ -30,4 +30,10 @@ extern int bogonic (int, int, int) ; ...@@ -30,4 +30,10 @@ extern int bogonic (int, int, int) ;
/* Any symbol_ref of an un-stubified objc_msgSend is an error; look /* Any symbol_ref of an un-stubified objc_msgSend is an error; look
for "objc_msgSend" in quotes, without the $stub suffix. */ for "objc_msgSend" in quotes, without the $stub suffix. */
/* { dg-final { scan-rtl-dump-not "symbol_ref.*\"objc_msgSend\"" "jump" } } */ /* { dg-final { scan-rtl-dump-not {symbol_ref.*"objc_msgSend"} "jump" { target powerpc*-*-darwin* } } } */
/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_objc_msgSend\n} } } */
/* { dg-final { scan-assembler {(bl|call)[ \t]+L_objc_msgSend\$stub\n} } } */
/* { dg-final { scan-assembler-not {(bl|call)[ \t]+_bogonic\n} } } */
/* { dg-final { scan-assembler {(bl|call)[ \t]+L_bogonic\$stub\n} } } */
/* { dg-final { scan-assembler-not {\$non_lazy_ptr} } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment