summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2019-06-22 17:32:51 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2019-06-22 15:32:51 +0000
commit1240df7b4075f043a00c5314318f3bbf9af719e6 (patch)
treeafc8d42d6f812236b8cd6de35319555455c70d83 /gcc/tree-ssa-alias.c
parent78f7607db4c53f8cfe4653a6c91c0328bc2854c3 (diff)
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
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r--gcc/tree-ssa-alias.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 111f375bb4a..32583156350 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -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))