diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2019-02-06 21:48:45 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2019-02-06 21:48:45 +0000 |
commit | f8dc3fb2023b627e0c45ce0ed255aa77e367ca73 (patch) | |
tree | d324efb4c403f7bfa863e2d57ba2fc0507eb5b19 /gcc/lra-constraints.c | |
parent | a4f73f96f182d9aff6ec63c3926a773a2a2c4075 (diff) |
re PR rtl-optimization/89225 (LRA hang on ppc64le compiling glibc starting with r268404)
2019-02-06 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/89225
* lra-constaints.c (simplify_operand_subreg): Add subreg mode
sizes check.
2019-02-06 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/89225
* gcc.target/powerpc/pr89225.c: New.
From-SVN: r268597
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r-- | gcc/lra-constraints.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index d581513f33f..3b975cc2c9a 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -1533,9 +1533,12 @@ simplify_operand_subreg (int nop, machine_mode reg_mode) a word. If valid memory becomes invalid after subreg elimination - we still have to reload memory. + and address might be different we still have to reload + memory. */ - if ((! addr_was_valid || addr_is_valid) + if ((! addr_was_valid + || addr_is_valid + || known_eq (GET_MODE_SIZE (mode), GET_MODE_SIZE (innermode))) && !(maybe_ne (GET_MODE_PRECISION (mode), GET_MODE_PRECISION (innermode)) && known_le (GET_MODE_SIZE (mode), UNITS_PER_WORD) |