aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2007-02-24 22:27:26 +0000
committerMike Stump <mrs@gcc.gnu.org>2007-02-24 22:27:26 +0000
commit320ce1d3a34ca4aa1c7300b0b8f843a6b1d4167e (patch)
tree82cf32c1673f3e1a5d51ec69812efc756cdab9b3 /gcc
parenta31498d293913e1006bd43e67884983a02471d1a (diff)
downloadgcc-320ce1d3a34ca4aa1c7300b0b8f843a6b1d4167e.zip
gcc-320ce1d3a34ca4aa1c7300b0b8f843a6b1d4167e.tar.gz
gcc-320ce1d3a34ca4aa1c7300b0b8f843a6b1d4167e.tar.bz2
i386.c (output_pic_addr_const): Stubify optimized symbols.
* config/i386/i386.c (output_pic_addr_const): Stubify optimized symbols. From-SVN: r122297
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c19
2 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2368d6a..e05b854 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index a88c615..77382cf 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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;