diff options
author | John David Anglin <danglin@gcc.gnu.org> | 2014-02-05 00:43:56 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2014-02-05 00:43:56 +0000 |
commit | d92f4df01a7c59cea958574a7d716661bb96a35b (patch) | |
tree | f9b5e9309ea124bd5de8fed7d0b8cf62513e7b64 /gcc/config/pa/pa.h | |
parent | ba057b4e87ff844635dddf0d1ced6dcf0d3f80ac (diff) | |
download | gcc-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.h | 9 |
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))) |