diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2006-10-24 02:12:16 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2006-10-24 00:12:16 +0000 |
commit | ae5360407bc31e22ac1c79c7a20ef1e225377203 (patch) | |
tree | 0f094604ce261f01a2cff72be5821a4342da1e37 /gcc/tree-ssa-operands.c | |
parent | 4d5fc916770f9cb56c3b4b8c81fcc09191e71a52 (diff) | |
download | gcc-ae5360407bc31e22ac1c79c7a20ef1e225377203.zip gcc-ae5360407bc31e22ac1c79c7a20ef1e225377203.tar.gz gcc-ae5360407bc31e22ac1c79c7a20ef1e225377203.tar.bz2 |
re PR tree-optimization/14784 ([Tree-ssa] alias analysis deficiency)
PR tree-optimization/14784
* tree-flow.h (struct var_ann_d): Add is_heapvar bit.
* tree-ssa-structalias.c (get_constraint_for,
intra_create_variable_infos): Set is_heapvar.
* tree-ssa-operands.c (access_can_touch_variable): Do not handle
non-heapvar pointer variables specially.
* gcc.dg/alias-10.c: New test.
From-SVN: r117986
Diffstat (limited to 'gcc/tree-ssa-operands.c')
-rw-r--r-- | gcc/tree-ssa-operands.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index 4fa876d..234eace 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -1151,11 +1151,11 @@ access_can_touch_variable (tree ref, tree alias, HOST_WIDE_INT offset, && flag_strict_aliasing && TREE_CODE (ref) != INDIRECT_REF && !MTAG_P (alias) + && !var_ann (alias)->is_heapvar && (TREE_CODE (base) != INDIRECT_REF || TREE_CODE (TREE_TYPE (base)) != UNION_TYPE) && !AGGREGATE_TYPE_P (TREE_TYPE (alias)) && TREE_CODE (TREE_TYPE (alias)) != COMPLEX_TYPE - && !POINTER_TYPE_P (TREE_TYPE (alias)) /* When the struct has may_alias attached to it, we need not to return true. */ && get_alias_set (base)) |