re PR rtl-optimization/55719 (ICE: Segmentation fault)
2013-01-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> PR target/55719 * config/s390/s390.c (s390_preferred_reload_class): Do not return NO_REGS for larl operands. (s390_reload_larl_operand): Use s390_load_address instead of emit_move_insn. 2013-01-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> PR target/55719 * gcc.target/s390/pr55719.c: New testcase. From-SVN: r195109
This commit is contained in:
parent
980d081296
commit
1abcd5eb46
@ -1,3 +1,11 @@
|
|||||||
|
2013-01-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||||
|
|
||||||
|
PR target/55719
|
||||||
|
* config/s390/s390.c (s390_preferred_reload_class): Do not return
|
||||||
|
NO_REGS for larl operands.
|
||||||
|
(s390_reload_larl_operand): Use s390_load_address instead of
|
||||||
|
emit_move_insn.
|
||||||
|
|
||||||
2013-01-11 Richard Biener <rguenther@suse.de>
|
2013-01-11 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
* tree-cfg.c (verify_node_sharing_1): Split out from ...
|
* tree-cfg.c (verify_node_sharing_1): Split out from ...
|
||||||
|
@ -2978,9 +2978,23 @@ s390_preferred_reload_class (rtx op, reg_class_t rclass)
|
|||||||
it is most likely being used as an address, so
|
it is most likely being used as an address, so
|
||||||
prefer ADDR_REGS. If 'class' is not a superset
|
prefer ADDR_REGS. If 'class' is not a superset
|
||||||
of ADDR_REGS, e.g. FP_REGS, reject this reload. */
|
of ADDR_REGS, e.g. FP_REGS, reject this reload. */
|
||||||
|
case CONST:
|
||||||
|
/* A larl operand with odd addend will get fixed via secondary
|
||||||
|
reload. So don't request it to be pushed into literal
|
||||||
|
pool. */
|
||||||
|
if (TARGET_CPU_ZARCH
|
||||||
|
&& GET_CODE (XEXP (op, 0)) == PLUS
|
||||||
|
&& GET_CODE (XEXP (XEXP(op, 0), 0)) == SYMBOL_REF
|
||||||
|
&& GET_CODE (XEXP (XEXP(op, 0), 1)) == CONST_INT)
|
||||||
|
{
|
||||||
|
if (reg_class_subset_p (ADDR_REGS, rclass))
|
||||||
|
return ADDR_REGS;
|
||||||
|
else
|
||||||
|
return NO_REGS;
|
||||||
|
}
|
||||||
|
/* fallthrough */
|
||||||
case LABEL_REF:
|
case LABEL_REF:
|
||||||
case SYMBOL_REF:
|
case SYMBOL_REF:
|
||||||
case CONST:
|
|
||||||
if (!legitimate_reload_constant_p (op))
|
if (!legitimate_reload_constant_p (op))
|
||||||
return NO_REGS;
|
return NO_REGS;
|
||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
@ -3061,7 +3075,7 @@ s390_reload_larl_operand (rtx reg, rtx addr, rtx scratch)
|
|||||||
emit_move_insn (scratch, symref);
|
emit_move_insn (scratch, symref);
|
||||||
|
|
||||||
/* Increment the address using la in order to avoid clobbering cc. */
|
/* Increment the address using la in order to avoid clobbering cc. */
|
||||||
emit_move_insn (reg, gen_rtx_PLUS (Pmode, scratch, const1_rtx));
|
s390_load_address (reg, gen_rtx_PLUS (Pmode, scratch, const1_rtx));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
2012-01-11 Richard Guenther <rguenther@suse.de>
|
2013-01-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||||
|
|
||||||
|
PR target/55719
|
||||||
|
* gcc.target/s390/pr55719.c: New testcase.
|
||||||
|
|
||||||
|
2013-01-11 Richard Guenther <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/44061
|
PR tree-optimization/44061
|
||||||
* gcc.dg/pr44061.c: New testcase.
|
* gcc.dg/pr44061.c: New testcase.
|
||||||
|
Loading…
Reference in New Issue
Block a user