2014-06-11 Richard Biener <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Jun 2014 07:35:36 +0000 (07:35 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Jun 2014 07:35:36 +0000 (07:35 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211436 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/20140610-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/20140610-2.c [new file with mode: 0644]
gcc/tree.h

index 80887df..e61b75d 100644 (file)
@@ -1,3 +1,12 @@
+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.
+
 2014-06-10  Jan Hubicka  <hubicka@ucw.cz>
 
        * varasm.c (set_implicit_section): New function.
@@ -7,7 +16,8 @@
        (default_function_section): Likewise.
        (decl_binds_to_current_def_p): Constify argument.
        * varasm.h (decl_binds_to_current_def_p): Update prototype.
-       * asan.c (asan_protect_global): Use symtab_get_node (decl)->implicit_section.
+       * asan.c (asan_protect_global): Use
+       symtab_get_node (decl)->implicit_section.
        * symtab.c (dump_symtab_base): Dump implicit sections.
        (verify_symtab_base): Verify sanity of sectoins and comdats.
        (symtab_resolve_alias): Alias share the section of its target.
index 53b6134..0df18c8 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-11  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/61437
+       * gcc.dg/torture/20140610-1.c: New testcase.
+       * gcc.dg/torture/20140610-2.c: Likewise.
+
 2014-06-10  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/61438
diff --git a/gcc/testsuite/gcc.dg/torture/20140610-1.c b/gcc/testsuite/gcc.dg/torture/20140610-1.c
new file mode 100644 (file)
index 0000000..67cf8cd
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do run } */
+/* { dg-additional-sources "20140610-2.c" } */
+
+extern int a;
+extern int *p;
+
+void test (void);
+
+int main ()
+{
+  *p = 0;
+  a = 1;
+  test ();
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/20140610-2.c b/gcc/testsuite/gcc.dg/torture/20140610-2.c
new file mode 100644 (file)
index 0000000..766e5f2
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+
+extern void abort (void);
+
+int a;
+int *p = &a;
+
+void test (void)
+{
+  if (a != 1)
+    abort ();
+}
index 63b714c..981a2c5 100644 (file)
@@ -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)))