Index: rs6000.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.c,v retrieving revision 1.613 diff -u -p -r1.613 rs6000.c --- rs6000.c 20 Mar 2004 02:56:52 -0000 1.613 +++ rs6000.c 21 Mar 2004 21:25:32 -0000 @@ -2260,6 +2260,23 @@ symbol_ref_operand (rtx op, enum machine if (mode != VOIDmode && GET_MODE (op) != mode) return 0; + if (GET_CODE (op) == SYMBOL_REF) + { + if (TARGET_MACHO) + { + /* Macho says it has to go through a stub or be local + when indirect mode. Stubs are considered local. */ +#if TARGET_MACHO + if (MACHOPIC_INDIRECT) + { + const char *t = XSTR (op, 0); + return (t[0] == '&' && (t[1] == 'T' || t[1] == 'D')); + } +#endif + } + return true; + } + return (GET_CODE (op) == SYMBOL_REF && (DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))); }