rs6000.c (symbol_ref_operand): Reject symbols who are not local for Darwin PIC.

2004-03-22  Andrew Pinski  <pinskia@physics.uc.edu>

        * config/rs6000/rs6000.c (symbol_ref_operand): Reject symbols
        who are not local for Darwin PIC.

From-SVN: r79830
This commit is contained in:
Andrew Pinski 2004-03-22 15:04:27 +00:00 committed by Andrew Pinski
parent 24105bab8c
commit aa6d25c99d
2 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2004-03-22 Andrew Pinski <pinskia@physics.uc.edu>
* config/rs6000/rs6000.c (symbol_ref_operand): Reject symbols
who are not local for Darwin PIC.
2004-03-22 Ulrich Weigand <uweigand@de.ibm.com>
* regrename.c (regrename_optimize): Set regs_ever_live for all

View File

@ -2260,6 +2260,23 @@ symbol_ref_operand (rtx op, enum machine_mode mode)
if (mode != VOIDmode && GET_MODE (op) != mode)
return 0;
#if TARGET_MACHO
if (GET_CODE (op) == SYMBOL_REF && TARGET_MACHO && MACHOPIC_INDIRECT)
{
/* Macho says it has to go through a stub or be local
when indirect mode. Stubs are considered local. */
const char *t = XSTR (op, 0);
/* "&" means that it is it a local defined symbol
so it is okay to call to. */
if (t[0] == '&')
return true;
/* "!T" means that the function is local defined. */
return (t[0] == '!' && t[1] == 'T');
}
#endif
return (GET_CODE (op) == SYMBOL_REF
&& (DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op)));
}