+2006-01-30 Ulrich Weigand <uweigand@de.ibm.com>
+
+ 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.
+
2006-01-30 Carlos O'Donell <carlos@codesourcery.com>
* optabs.c (prepare_cmp_insn): If unbaised and unsigned then bias
/* 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;
}
/* 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)
{
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.