aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-structalias.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-11-26 09:04:44 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-11-26 09:04:44 +0000
commite8e9e1cda43a2b56618172896acb62103cd6bab8 (patch)
tree875e2f1eb7d55bcfe34f90de766d02a788628b6a /gcc/tree-ssa-structalias.c
parent65f5c720ad1356836df93ddd76b42051a7c96257 (diff)
downloadgcc-e8e9e1cda43a2b56618172896acb62103cd6bab8.zip
gcc-e8e9e1cda43a2b56618172896acb62103cd6bab8.tar.gz
gcc-e8e9e1cda43a2b56618172896acb62103cd6bab8.tar.bz2
re PR tree-optimization/59287 (points-to analysis confused by union accesses)
2013-11-26 Richard Biener <rguenther@suse.de> PR tree-optimization/59287 * tree-ssa-structalias.c (get_constraint_for_component_ref): Remove no longer necessary special-casing of union accesses. * gcc.dg/tree-ssa/alias-29.c: New testcase. From-SVN: r205380
Diffstat (limited to 'gcc/tree-ssa-structalias.c')
-rw-r--r--gcc/tree-ssa-structalias.c23
1 files changed, 0 insertions, 23 deletions
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 2851eae..6482e68 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -3163,29 +3163,6 @@ get_constraint_for_component_ref (tree t, vec<ce_s> *results,
return;
}
- /* Handle type-punning through unions. If we are extracting a pointer
- from a union via a possibly type-punning access that pointer
- points to anything, similar to a conversion of an integer to
- a pointer. */
- if (!lhs_p)
- {
- tree u;
- for (u = t;
- TREE_CODE (u) == COMPONENT_REF || TREE_CODE (u) == ARRAY_REF;
- u = TREE_OPERAND (u, 0))
- if (TREE_CODE (u) == COMPONENT_REF
- && TREE_CODE (TREE_TYPE (TREE_OPERAND (u, 0))) == UNION_TYPE)
- {
- struct constraint_expr temp;
-
- temp.offset = 0;
- temp.var = anything_id;
- temp.type = ADDRESSOF;
- results->safe_push (temp);
- return;
- }
- }
-
t = get_ref_base_and_extent (t, &bitpos, &bitsize, &bitmaxsize);
/* Pretend to take the address of the base, we'll take care of