aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa.h
diff options
context:
space:
mode:
authorJohn David Anglin <danglin@gcc.gnu.org>2014-02-05 00:43:56 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2014-02-05 00:43:56 +0000
commitd92f4df01a7c59cea958574a7d716661bb96a35b (patch)
treef9b5e9309ea124bd5de8fed7d0b8cf62513e7b64 /gcc/config/pa/pa.h
parentba057b4e87ff844635dddf0d1ced6dcf0d3f80ac (diff)
downloadgcc-d92f4df01a7c59cea958574a7d716661bb96a35b.zip
gcc-d92f4df01a7c59cea958574a7d716661bb96a35b.tar.gz
gcc-d92f4df01a7c59cea958574a7d716661bb96a35b.tar.bz2
re PR target/59777 (Incorrect expansion of TLS arguments in a call)
PR target/59777 * config/pa/pa.c (legitimize_tls_address): Return original address if not passed a SYMBOL_REF rtx. (hppa_legitimize_address): Call legitimize_tls_address for all TLS addresses. (pa_emit_move_sequence): Simplify TLS source operands. (pa_legitimate_constant_p): Reject all TLS constants. * config/pa/pa.h (PA_SYMBOL_REF_TLS_P): Correct comment. (CONSTANT_ADDRESS_P): Reject TLS CONST addresses. From-SVN: r207493
Diffstat (limited to 'gcc/config/pa/pa.h')
-rw-r--r--gcc/config/pa/pa.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/pa/pa.h b/gcc/config/pa/pa.h
index 36d1388..ac3f0eb 100644
--- a/gcc/config/pa/pa.h
+++ b/gcc/config/pa/pa.h
@@ -784,9 +784,9 @@ extern int may_call_alloca;
#define MAX_REGS_PER_ADDRESS 2
-/* Non-TLS symbolic references. */
-#define PA_SYMBOL_REF_TLS_P(RTX) \
- (GET_CODE (RTX) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (RTX) != 0)
+/* TLS symbolic reference. */
+#define PA_SYMBOL_REF_TLS_P(X) \
+ (GET_CODE (X) == SYMBOL_REF && SYMBOL_REF_TLS_MODEL (X) != 0)
/* Recognize any constant value that is a valid address except
for symbolic addresses. We get better CSE by rejecting them
@@ -796,7 +796,8 @@ extern int may_call_alloca;
#define CONSTANT_ADDRESS_P(X) \
((GET_CODE (X) == LABEL_REF \
|| (GET_CODE (X) == SYMBOL_REF && !SYMBOL_REF_TLS_MODEL (X)) \
- || GET_CODE (X) == CONST_INT || GET_CODE (X) == CONST \
+ || GET_CODE (X) == CONST_INT \
+ || (GET_CODE (X) == CONST && !pa_tls_referenced_p (X)) \
|| GET_CODE (X) == HIGH) \
&& (reload_in_progress || reload_completed \
|| ! pa_symbolic_expression_p (X)))