From 71d47a145dd9cea2a8e9e067eb4eee26e4efb4af Mon Sep 17 00:00:00 2001 From: vmakarov Date: Thu, 22 Feb 2018 21:17:51 +0000 Subject: 2018-02-22 Vladimir Makarov PR target/81572 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros. * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use LRA_UNKNOWN_ALT. * lra-constraints.c (curr_insn_transform): Set up LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use LRA_UNKNOWN_ALT. (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT. * lra-eliminations.c (spill_pseudos): Ditto. (process_insn_for_elimination): Ditto. * lra-lives.c (reg_early_clobber_p): Use the new macros. * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and LRA_NON_CLOBBERED_ALT. 2018-02-22 Vladimir Makarov PR target/81572 * gcc.target/powerpc/pr81572.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257915 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/lra-lives.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/lra-lives.c') diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index 2e53f877460..ddc0a9bbcc5 100644 --- a/gcc/lra-lives.c +++ b/gcc/lra-lives.c @@ -598,7 +598,9 @@ static inline bool reg_early_clobber_p (const struct lra_insn_reg *reg, int n_alt) { return (reg->early_clobber - && (n_alt < 0 || TEST_BIT (reg->early_clobber_alts, n_alt))); + && (n_alt == LRA_UNKNOWN_ALT + || (n_alt != LRA_NON_CLOBBERED_ALT + && TEST_BIT (reg->early_clobber_alts, n_alt)))); } /* Process insns of the basic block BB to update pseudo live ranges, -- cgit v1.2.1