aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorRichard Biener <rguenth@gcc.gnu.org>2014-06-11 07:35:36 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-06-11 07:35:36 +0000
commit96a3f4dfb60bb315496e00297b9f9b852482dea8 (patch)
tree19c970a2fb41307bac1907c7e58cdc3e31623c91 /gcc/tree.h
parente257a17cb9cc4dc76a79680616420e75ba030b5f (diff)
downloadgcc-96a3f4dfb60bb315496e00297b9f9b852482dea8.zip
gcc-96a3f4dfb60bb315496e00297b9f9b852482dea8.tar.gz
gcc-96a3f4dfb60bb315496e00297b9f9b852482dea8.tar.bz2
re PR tree-optimization/61437 (wrong code on x86_64-linux-gnu when compile separately)
2014-06-11 Richard Biener <rguenther@suse.de> PR middle-end/61437 Revert 2014-06-04 Richard Biener <rguenther@suse.de> * tree.h (may_be_aliased): Trust TREE_ADDRESSABLE from TREE_PUBLIC and DECL_EXTERNAL decls. * gcc.dg/torture/20140610-1.c: New testcase. * gcc.dg/torture/20140610-2.c: Likewise. From-SVN: r211436
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 63b714c..981a2c5 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4524,7 +4524,9 @@ static inline bool
may_be_aliased (const_tree var)
{
return (TREE_CODE (var) != CONST_DECL
- && TREE_ADDRESSABLE (var)
+ && (TREE_PUBLIC (var)
+ || DECL_EXTERNAL (var)
+ || TREE_ADDRESSABLE (var))
&& !((TREE_STATIC (var) || TREE_PUBLIC (var) || DECL_EXTERNAL (var))
&& ((TREE_READONLY (var)
&& !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (var)))