re PR bootstrap/48161 (hppa*-*-* will not bootstrap on 4.6 branch with release checking)

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.

From-SVN: r171126
This commit is contained in:
Jakub Jelinek 2011-03-18 09:35:17 +01:00
parent 378758560b
commit 419e1853a8
4 changed files with 37 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2011-03-18 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.
2011-03-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47725

View File

@ -6971,7 +6971,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, enum machine_mode tmode,
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;

View File

@ -1,3 +1,8 @@
2011-03-18 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/48161
* gcc.c-torture/compile/pr48161.c: New test.
2011-03-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/47725

View File

@ -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;
}