predicates.md ("bras_sym_operand"): Do not accept nonlocal function symbols if flag_pic.
ChangeLog: * config/s390/predicates.md ("bras_sym_operand"): Do not accept nonlocal function symbols if flag_pic. testsuite/ChangeLog: * g++.dg/other/s390-1.C: New testcase. From-SVN: r117973
This commit is contained in:
parent
b0cd88d216
commit
6915c1cea2
@ -1,3 +1,8 @@
|
||||
2006-10-23 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* config/s390/predicates.md ("bras_sym_operand"): Do not accept
|
||||
nonlocal function symbols if flag_pic.
|
||||
|
||||
2006-10-23 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/27132
|
||||
|
@ -62,7 +62,8 @@
|
||||
;; Allow SYMBOL_REFs and @PLT stubs.
|
||||
|
||||
(define_special_predicate "bras_sym_operand"
|
||||
(ior (match_code "symbol_ref")
|
||||
(ior (and (match_code "symbol_ref")
|
||||
(match_test "!flag_pic || SYMBOL_REF_LOCAL_P (op)"))
|
||||
(and (match_code "const")
|
||||
(and (match_test "GET_CODE (XEXP (op, 0)) == UNSPEC")
|
||||
(match_test "XINT (XEXP (op, 0), 1) == UNSPEC_PLT")))))
|
||||
|
@ -1,3 +1,7 @@
|
||||
2006-10-23 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* g++.dg/other/s390-1.C: New testcase.
|
||||
|
||||
2006-10-23 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/27132
|
||||
|
32
gcc/testsuite/g++.dg/other/s390-1.C
Normal file
32
gcc/testsuite/g++.dg/other/s390-1.C
Normal file
@ -0,0 +1,32 @@
|
||||
// { dg-do compile { target s390x-*-* } }
|
||||
// { dg-options "-O3 -fPIC" }
|
||||
|
||||
class A
|
||||
{
|
||||
public:
|
||||
void f (void) { _M_a = 0; }
|
||||
void g (void) { _M_a = 1; }
|
||||
void h (void);
|
||||
|
||||
private:
|
||||
int _M_a;
|
||||
};
|
||||
|
||||
class B : virtual public A
|
||||
{
|
||||
};
|
||||
|
||||
void
|
||||
test (B& x)
|
||||
{
|
||||
for (int i = 0; i < 17; i++)
|
||||
{
|
||||
x.f ();
|
||||
(x.*&A::g) ();
|
||||
x.h ();
|
||||
}
|
||||
}
|
||||
|
||||
// Check that every call to A::g goes via the PLT.
|
||||
// { dg-final { scan-assembler-not "brasl\[^@\]*\n" } }
|
||||
|
Loading…
Reference in New Issue
Block a user