OSDN Git Service

* config/i386/i386.c (output_pic_addr_const): Stubify optimized
authormrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 24 Feb 2007 22:27:26 +0000 (22:27 +0000)
committermrs <mrs@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 24 Feb 2007 22:27:26 +0000 (22:27 +0000)
symbols.

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

gcc/ChangeLog
gcc/config/i386/i386.c

index 2368d6a..e05b854 100644 (file)
@@ -1,3 +1,8 @@
+2007-02-24  Mike Stump  <mrs@apple.com>
+
+       * config/i386/i386.c (output_pic_addr_const): Stubify optimized
+       symbols.
+
 2007-02-24  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/30951
index a88c615..77382cf 100644 (file)
@@ -7582,7 +7582,24 @@ output_pic_addr_const (FILE *file, rtx x, int code)
       break;
 
     case SYMBOL_REF:
-      output_addr_const (file, x);
+      if (! TARGET_MACHO || TARGET_64BIT)
+       output_addr_const (file, x);
+      else
+       {
+         const char *name = XSTR (x, 0);
+
+         /* Mark the decl as referenced so that cgraph will output the function.  */
+         if (SYMBOL_REF_DECL (x))
+           mark_decl_referenced (SYMBOL_REF_DECL (x));
+
+         if (MACHOPIC_INDIRECT
+#if TARGET_MACHO
+             && machopic_classify_symbol (x) == MACHOPIC_UNDEFINED_FUNCTION
+#endif
+             )
+           name = machopic_indirection_name (x, /*stub_p=*/true);
+         assemble_name (file, name);
+       }
       if (!TARGET_MACHO && code == 'P' && ! SYMBOL_REF_LOCAL_P (x))
        fputs ("@PLT", file);
       break;