aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2006-06-21 11:31:56 -0700
committerRichard Henderson <rth@gcc.gnu.org>2006-06-21 11:31:56 -0700
commitb0100a4450aa522ae3f079df2f0b9b0cdcd07228 (patch)
tree637e4905782478ff8adf204626f6f28d8e7b3df7 /gcc
parent890404315b63f2d7ac93ac42a0a9da4a2b90a27e (diff)
downloadgcc-b0100a4450aa522ae3f079df2f0b9b0cdcd07228.zip
gcc-b0100a4450aa522ae3f079df2f0b9b0cdcd07228.tar.gz
gcc-b0100a4450aa522ae3f079df2f0b9b0cdcd07228.tar.bz2
re PR target/26347 (hidden weak extern functions fail regardless of existence on alpha/linux)
PR target/26347 PR target/27082 * config/alpha/predicates.md (small_symbolic_operand): Deny weak symbols. (global_symbolic_operand): Allow weak symbols, even if local_p. From-SVN: r114861
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/alpha/predicates.md6
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f612b09..8dcf578 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2006-06-21 Richard Henderson <rth@redhat.com>
+
+ PR target/26347
+ PR target/27082
+ * config/alpha/predicates.md (small_symbolic_operand): Deny weak
+ symbols.
+ (global_symbolic_operand): Allow weak symbols, even if local_p.
+
2006-06-21 Eric Botcazou <ebotcazou@adacore.com>
* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): New function.
diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md
index a035fff..8d375608 100644
--- a/gcc/config/alpha/predicates.md
+++ b/gcc/config/alpha/predicates.md
@@ -366,7 +366,8 @@
return (SYMBOL_REF_LOCAL_P (op)
&& SYMBOL_REF_SMALL_P (op)
- && SYMBOL_REF_TLS_MODEL (op) == 0);
+ && !SYMBOL_REF_WEAK (op)
+ && !SYMBOL_REF_TLS_MODEL (op));
})
;; Return true if OP is a SYMBOL_REF or CONST referencing a variable
@@ -382,7 +383,8 @@
if (GET_CODE (op) != SYMBOL_REF)
return 0;
- return !SYMBOL_REF_LOCAL_P (op) && !SYMBOL_REF_TLS_MODEL (op);
+ return ((!SYMBOL_REF_LOCAL_P (op) || SYMBOL_REF_WEAK (op))
+ && !SYMBOL_REF_TLS_MODEL (op));
})
;; Returns 1 if OP is a symbolic operand, i.e. a symbol_ref or a label_ref,