2004-04-21 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Apr 2004 15:27:17 +0000 (15:27 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Apr 2004 15:27:17 +0000 (15:27 +0000)
        * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack
        for TARGET_MACHO.
        (print_operand): For TARGET_MACHO check to see if we need a stub
        and output one if we need it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80966 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 998fe54..3fc6309 100644 (file)
@@ -1,4 +1,9 @@
-2004-04-12  Andrew Pinski  <pinskia@physics.uc.edu>
+2004-04-21  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * config/rs6000/rs6000.c (symbol_ref_operand): Remove hack
+       for TARGET_MACHO.
+       (print_operand): For TARGET_MACHO check to see if we need a stub
+       and output one if we need it.
 
        PR debug/15033
        * dwarf2out.c (rtl_for_decl_location): Check for NULL
index 5384c79..c9a5558 100644 (file)
@@ -2315,23 +2315,6 @@ 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)));
 }
@@ -9507,7 +9490,17 @@ print_operand (FILE *file, rtx x, int code)
              break;
            }
        }
-      if (TARGET_AIX)
+      /* For macho, we need to check it see if we need a stub.  */
+      if (TARGET_MACHO)
+       {
+         const char *name = XSTR (x, 0);
+#ifdef TARGET_MACHO
+         if (machopic_classify_name (name) == MACHOPIC_UNDEFINED_FUNCTION)
+           name = machopic_stub_name (name);
+#endif
+         assemble_name (file, name);
+       }
+     else if (TARGET_AIX)
        RS6000_OUTPUT_BASENAME (file, XSTR (x, 0));
       else
        assemble_name (file, XSTR (x, 0));