Commit 1240df7b by Jan Hubicka Committed by Jan Hubicka

alias-access-path-6.c: New testcase.

	* gcc.dg/tree-ssa/alias-access-path-6.c: New testcase.
	* tree-ssa-alias.c (nonoverlapping_component_refs_p): Do not
	give up on bitfields; continue searching for different refs
	appearing later.

From-SVN: r272587
parent 78f7607d
2019-06-22 Jan Hubicka <jh@suse.cz>
* tree-ssa-alias.c (nonoverlapping_component_refs_p): Do not
give up on bitfields; continue searching for different refs
appearing later.
2019-06-21 Jakub Jelinek <jakub@redhat.com>
* tree-vect-data-refs.c (vect_find_stmt_data_reference): Handle
......
2019-06-22 Jan Hubicka <jh@suse.cz>
* gcc.dg/tree-ssa/alias-access-path-6.c: New testcase.
2019-06-22 Marek Polacek <polacek@redhat.com>
PR c++/86476 - noexcept-specifier is a complete-class context.
......
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
/* This tests that nonoveralpping_component_refs does not give up
on field delcs and continues looking to find mismatch between
a1 and a2. */
struct a {
int a:3;
int b:3;
};
struct b {struct a a1,a2;};
struct c {struct b b[10];} *cptr;
struct d {struct c c;} *dptr;
int
test(int i,int j)
{
cptr->b[i].a1.a=0;
dptr->c.b[j].a2.b=1;
return cptr->b[i].a1.a;
}
int
test2(int i,int j)
{
cptr->b[i].a1.a=1;
dptr->c.b[j].a1.a=0;
return cptr->b[i].a1.a;
}
/* { dg-final { scan-tree-dump-times "return 0" 1 "optimized"} } */
/* { dg-final { scan-tree-dump-not "return 1" "optimized"} } */
......@@ -1350,19 +1350,16 @@ nonoverlapping_component_refs_p (const_tree x, const_tree y)
same. */
if (DECL_BIT_FIELD_REPRESENTATIVE (fieldx) == fieldy
|| DECL_BIT_FIELD_REPRESENTATIVE (fieldy) == fieldx)
{
++alias_stats.nonoverlapping_component_refs_p_may_alias;
return false;
}
;
/* Different fields of the same record type cannot overlap.
??? Bitfields can overlap at RTL level so punt on them. */
if (DECL_BIT_FIELD (fieldx) && DECL_BIT_FIELD (fieldy))
else if (DECL_BIT_FIELD (fieldx) && DECL_BIT_FIELD (fieldy))
;
else
{
++alias_stats.nonoverlapping_component_refs_p_may_alias;
return false;
++alias_stats.nonoverlapping_component_refs_p_no_alias;
return true;
}
++alias_stats.nonoverlapping_component_refs_p_no_alias;
return true;
}
}
if (TYPE_UID (typex) < TYPE_UID (typey))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment