diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2006-01-31 01:06:16 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2006-01-31 01:06:16 +0000 |
commit | 3cd045d10e27fcdc283a9f102e2dcded02c27b8b (patch) | |
tree | c66c9889dde4a9acf3c4c6bf6cc70f8374ff3b9e /gcc/config | |
parent | de8d0a67e4b91b7b3dba34a7838b3cf8e23d8d85 (diff) | |
download | gcc-3cd045d10e27fcdc283a9f102e2dcded02c27b8b.zip gcc-3cd045d10e27fcdc283a9f102e2dcded02c27b8b.tar.gz gcc-3cd045d10e27fcdc283a9f102e2dcded02c27b8b.tar.bz2 |
re PR target/26018 (Assembler errors with -march=z900 compiling glibc)
PR target/26018
* config/s390/s390.c (struct machine_function): New flag
decomposed_literal_pool_addresses_ok_p.
(s390_reorg): Set it before final stage of literal pool transforms.
(s390_decompose_address): Only accept displacements of the form
(minus (label_ref ...) (label_ref ...)) if that flag is set.
From-SVN: r110422
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/s390/s390.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 883e121..37a038d 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -279,6 +279,9 @@ struct machine_function GTY(()) /* True if we may need to perform branch splitting. */ bool split_branches_pending_p; + /* True during final stage of literal pool processing. */ + bool decomposed_literal_pool_addresses_ok_p; + /* Some local-dynamic TLS symbol name. */ const char *some_ld_name; @@ -1705,7 +1708,9 @@ s390_decompose_address (rtx addr, struct s390_address *out) } /* Accept chunkified literal pool symbol references. */ - else if (GET_CODE (disp) == MINUS + else if (cfun && cfun->machine + && cfun->machine->decomposed_literal_pool_addresses_ok_p + && GET_CODE (disp) == MINUS && GET_CODE (XEXP (disp, 0)) == LABEL_REF && GET_CODE (XEXP (disp, 1)) == LABEL_REF) { @@ -8934,6 +8939,8 @@ s390_reorg (void) machine_dependent_reorg might confuse insn length counts. */ split_all_insns_noflow (); + /* From here on decomposed literal pool addresses must be accepted. */ + cfun->machine->decomposed_literal_pool_addresses_ok_p = true; /* Install the main literal pool and the associated base register load insns. |