diff options
author | Richard Biener <rguenther@suse.de> | 2013-11-26 09:04:44 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2013-11-26 09:04:44 +0000 |
commit | e8e9e1cda43a2b56618172896acb62103cd6bab8 (patch) | |
tree | 875e2f1eb7d55bcfe34f90de766d02a788628b6a /gcc/tree-ssa-structalias.c | |
parent | 65f5c720ad1356836df93ddd76b42051a7c96257 (diff) | |
download | gcc-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.c | 23 |
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 |