Message ID | 20150914.233949.1198971614113485779.davem@davemloft.net |
---|---|
State | New |
Headers | show |
On 09/15/2015 02:39 AM, David Miller wrote: > This was the most glaring case, and would result in LRA crashing > if this code snippet was actually hit on big-endian, since > simplify_gen_subreg() will return NULL in such a case and then > we try to blindly emit a move to 'subreg'. > > > Vlad, is this OK to commit? Yes. Thanks, David. We could use subreg_lowpart_offset for simplify_gen_subreg but for this case it would be just wasting computer cycles. > 2015-09-14 David S. Miller <davem@davemloft.net> > > * lra-constraints.c (simplify_operand_subreg): Do not assume that > lowpart of a SUBREG has offset zero. > > diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c > index cdb2695..fc8e43d 100644 > --- a/gcc/lra-constraints.c > +++ b/gcc/lra-constraints.c > @@ -1545,7 +1545,7 @@ simplify_operand_subreg (int nop, machine_mode reg_mode) > bool insert_before, insert_after; > > PUT_MODE (new_reg, mode); > - subreg = simplify_gen_subreg (innermode, new_reg, mode, 0); > + subreg = gen_lowpart_SUBREG (innermode, new_reg); > bitmap_set_bit (&lra_subreg_reload_pseudos, REGNO (new_reg)); > > insert_before = (type != OP_OUT);
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index cdb2695..fc8e43d 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -1545,7 +1545,7 @@ simplify_operand_subreg (int nop, machine_mode reg_mode) bool insert_before, insert_after; PUT_MODE (new_reg, mode); - subreg = simplify_gen_subreg (innermode, new_reg, mode, 0); + subreg = gen_lowpart_SUBREG (innermode, new_reg); bitmap_set_bit (&lra_subreg_reload_pseudos, REGNO (new_reg)); insert_before = (type != OP_OUT);