Message ID | 20110317200743.GX30899@tyan-ft48-01.lab.bos.redhat.com |
---|---|
State | New |
Headers | show |
On Thu, Mar 17, 2011 at 09:07:43PM +0100, Jakub Jelinek wrote: > The following fixes the testcase in cross to hppa-* as well. > I'll bootstrap/regtest it momentarily, ok if it passes? Now bootstrapped/regtested on x86_64-linux and i686-linux. > 2011-03-17 Richard Henderson <rth@redhat.com> > Jakub Jelinek <jakub@redhat.com> > > PR bootstrap/48161 > * expr.c (expand_expr_addr_expr_1): Use simplify_gen_binary > instead of gen_rtx_PLUS if EXPAND_SUM or EXPAND_INITIALIZER. > > * gcc.c-torture/compile/pr48161.c: New test. > > --- gcc/expr.c.jj 2011-03-14 14:12:15.000000000 +0100 > +++ gcc/expr.c 2011-03-17 16:49:01.000000000 +0100 > @@ -6971,7 +6971,7 @@ expand_expr_addr_expr_1 (tree exp, rtx t > tmp = convert_memory_address_addr_space (tmode, tmp, as); > > if (modifier == EXPAND_SUM || modifier == EXPAND_INITIALIZER) > - result = gen_rtx_PLUS (tmode, result, tmp); > + result = simplify_gen_binary (PLUS, tmode, result, tmp); > else > { > subtarget = bitpos ? NULL_RTX : target; > --- gcc/testsuite/gcc.c-torture/compile/pr48161.c.jj 2011-03-09 16:32:56.855000001 +0100 > +++ gcc/testsuite/gcc.c-torture/compile/pr48161.c 2011-03-17 17:20:34.000000000 +0100 Jakub
On Thu, Mar 17, 2011 at 11:38 PM, Jakub Jelinek <jakub@redhat.com> wrote: > On Thu, Mar 17, 2011 at 09:07:43PM +0100, Jakub Jelinek wrote: >> The following fixes the testcase in cross to hppa-* as well. >> I'll bootstrap/regtest it momentarily, ok if it passes? > > Now bootstrapped/regtested on x86_64-linux and i686-linux. Ok. Thanks, Richard. >> 2011-03-17 Richard Henderson <rth@redhat.com> >> Jakub Jelinek <jakub@redhat.com> >> >> PR bootstrap/48161 >> * expr.c (expand_expr_addr_expr_1): Use simplify_gen_binary >> instead of gen_rtx_PLUS if EXPAND_SUM or EXPAND_INITIALIZER. >> >> * gcc.c-torture/compile/pr48161.c: New test. >> >> --- gcc/expr.c.jj 2011-03-14 14:12:15.000000000 +0100 >> +++ gcc/expr.c 2011-03-17 16:49:01.000000000 +0100 >> @@ -6971,7 +6971,7 @@ expand_expr_addr_expr_1 (tree exp, rtx t >> tmp = convert_memory_address_addr_space (tmode, tmp, as); >> >> if (modifier == EXPAND_SUM || modifier == EXPAND_INITIALIZER) >> - result = gen_rtx_PLUS (tmode, result, tmp); >> + result = simplify_gen_binary (PLUS, tmode, result, tmp); >> else >> { >> subtarget = bitpos ? NULL_RTX : target; >> --- gcc/testsuite/gcc.c-torture/compile/pr48161.c.jj 2011-03-09 16:32:56.855000001 +0100 >> +++ gcc/testsuite/gcc.c-torture/compile/pr48161.c 2011-03-17 17:20:34.000000000 +0100 > > Jakub >
--- gcc/expr.c.jj 2011-03-14 14:12:15.000000000 +0100 +++ gcc/expr.c 2011-03-17 16:49:01.000000000 +0100 @@ -6971,7 +6971,7 @@ expand_expr_addr_expr_1 (tree exp, rtx t tmp = convert_memory_address_addr_space (tmode, tmp, as); if (modifier == EXPAND_SUM || modifier == EXPAND_INITIALIZER) - result = gen_rtx_PLUS (tmode, result, tmp); + result = simplify_gen_binary (PLUS, tmode, result, tmp); else { subtarget = bitpos ? NULL_RTX : target; --- gcc/testsuite/gcc.c-torture/compile/pr48161.c.jj 2011-03-09 16:32:56.855000001 +0100 +++ gcc/testsuite/gcc.c-torture/compile/pr48161.c 2011-03-17 17:20:34.000000000 +0100 @@ -0,0 +1,24 @@ +/* PR bootstrap/48161 */ + +struct T { int u; }; +struct G { int l; int t; int r; }; +struct V { struct G v[10]; }; +struct { struct V b; } *h; +void bar (void); + +struct G * +baz (struct V *x, unsigned y) +{ + return &x->v[y]; +} + +int +foo (struct T *x, struct T *y) +{ + if ((baz (&h->b, y->u)->t ? baz (&h->b, y->u)->t : 0) + - baz (h ? &h->b : 0, x->u)->r + - (baz (h ? &h->b : 0, x->u)->t > 0 ? 5 : 0)) + return 1; + bar (); + return 0; +}