diff options
author | Richard Biener <rguenth@gcc.gnu.org> | 2014-06-11 07:35:36 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-06-11 07:35:36 +0000 |
commit | 96a3f4dfb60bb315496e00297b9f9b852482dea8 (patch) | |
tree | 19c970a2fb41307bac1907c7e58cdc3e31623c91 /gcc | |
parent | e257a17cb9cc4dc76a79680616420e75ba030b5f (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/20140610-1.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/20140610-2.c | 12 | ||||
-rw-r--r-- | gcc/tree.h | 4 |
5 files changed, 47 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 80887df..e61b75d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 53b6134..0df18c8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 index 0000000..67cf8cd --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/20140610-1.c @@ -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 index 0000000..766e5f2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/20140610-2.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ + +extern void abort (void); + +int a; +int *p = &a; + +void test (void) +{ + if (a != 1) + abort (); +} @@ -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))) |