aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2005-11-29 00:47:28 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2005-11-29 00:47:28 +0000
commit0a6a4494e4fd89495478275905a4655c8cd6382e (patch)
tree3a3f6245a7abb1c5fdf4196fd76d75067eaa9e74
parent6b12b9b330b5fd638ca23f58db49a5a1d3417455 (diff)
downloadgcc-0a6a4494e4fd89495478275905a4655c8cd6382e.zip
gcc-0a6a4494e4fd89495478275905a4655c8cd6382e.tar.gz
gcc-0a6a4494e4fd89495478275905a4655c8cd6382e.tar.bz2
re PR libfortran/24991 (gfortran build fails with - error:gthr-default.h: No such file or directory)
PR libfortran/24991 * config/darwin.c (machopic_indirection_name, machopic_output_indirection): Follow transparent alias chain. From-SVN: r107639
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/darwin.c27
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 789042d..eb0b34f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2005-11-28 Alexandre Oliva <aoliva@redhat.com>
+ PR libfortran/24991
+ * config/darwin.c (machopic_indirection_name,
+ machopic_output_indirection): Follow transparent alias chain.
+
+2005-11-28 Alexandre Oliva <aoliva@redhat.com>
+
* varasm.c (ultimate_transparent_alias_target): Add comment.
2005-11-28 Kazu Hirata <kazu@codesourcery.com>
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index bd5d5a8..98c7d30 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -316,6 +316,21 @@ machopic_indirection_name (rtx sym_ref, bool stub_p)
const char *suffix;
const char *prefix = user_label_prefix;
const char *quote = "";
+ tree id;
+
+ id = maybe_get_identifier (name);
+ if (id)
+ {
+ tree id_orig = id;
+
+ while (IDENTIFIER_TRANSPARENT_ALIAS (id))
+ id = TREE_CHAIN (id);
+ if (id != id_orig)
+ {
+ name = IDENTIFIER_POINTER (id);
+ namelen = strlen (name);
+ }
+ }
if (name[0] == '*')
{
@@ -861,6 +876,18 @@ machopic_output_indirection (void **slot, void *data)
{
char *sym;
char *stub;
+ tree id;
+
+ id = maybe_get_identifier (sym_name);
+ if (id)
+ {
+ tree id_orig = id;
+
+ while (IDENTIFIER_TRANSPARENT_ALIAS (id))
+ id = TREE_CHAIN (id);
+ if (id != id_orig)
+ sym_name = IDENTIFIER_POINTER (id);
+ }
sym = alloca (strlen (sym_name) + 2);
if (sym_name[0] == '*' || sym_name[0] == '&')