diff options
author | Richard Guenther <rguenther@suse.de> | 2009-06-29 12:20:39 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2009-06-29 12:20:39 +0000 |
commit | 5b21f0f37dd072967e60c5e413dbabec1eb1c837 (patch) | |
tree | e708803ab158cd132fb494655ffed7aec0ca820d /gcc/testsuite | |
parent | 09a782ebdacc6a5227ed464d47eb3cc27e252c6a (diff) | |
download | gcc-5b21f0f37dd072967e60c5e413dbabec1eb1c837.zip gcc-5b21f0f37dd072967e60c5e413dbabec1eb1c837.tar.gz gcc-5b21f0f37dd072967e60c5e413dbabec1eb1c837.tar.bz2 |
re PR middle-end/38212 (restrict implementation causes wrong-code)
2009-06-29 Richard Guenther <rguenther@suse.de>
PR middle-end/38212
* alias.c (find_base_decl): Remove.
(get_deref_alias_set_1): Remove restrict handling.
* c-common.c (c_apply_type_quals_to_decl): Do not set
DECL_POINTER_ALIAS_SET.
* gimplify.c (find_single_pointer_decl_1): Remove.
(find_single_pointer_decl): Likewise.
(internal_get_tmp_var): Remove restrict handling.
(gimple_regimplify_operands): Likewise.
* omp-low.c (expand_omp_atomic_pipeline): Do not set
DECL_POINTER_ALIAS_SET. Use ref-all pointers.
* print-tree.c (print_node): Do not print DECL_POINTER_ALIAS_SET.
* tree.c (restrict_base_for_decl): Remove.
(init_ttree): Do not allocate it.
(make_node_stat): Do not set DECL_POINTER_ALIAS_SET. Set
LABEL_DECL_UID for label decls.
(copy_node_stat): Do not copy restrict information.
(decl_restrict_base_lookup): Remove.
(decl_restrict_base_insert): Likewise.
(print_restrict_base_statistics): Likewise.
(dump_tree_statistics): Do not call print_restrict_base_statistics.
* tree.h (DECL_POINTER_ALIAS_SET): Remove.
(DECL_POINTER_ALIAS_SET_KNOWN_P): Likewise.
(struct tree_decl_common): Rename pointer_alias_set to label_decl_uid.
(LABEL_DECL_UID): Adjust.
(DECL_BASED_ON_RESTRICT_P): Remove.
(DECL_GET_RESTRICT_BASE): Likewise.
(SET_DECL_RESTRICT_BASE): Likewise.
(struct tree_decl_with_vis): Remove based_on_restrict_p flag.
* config/i386/i386.c (ix86_gimplify_va_arg): Use ref-all pointers
instead of DECL_POINTER_ALIAS_SET.
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
* config/s390/s390.c (s390_gimplify_va_arg): Likewise.
* config/spu/spu.c (spu_gimplify_va_arg_expr): Likewise.
* gcc.c-torture/execute/pr38212.c: New testcase.
From-SVN: r149047
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr38212.c | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b819b37..dbac55f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2009-06-29 Richard Guenther <rguenther@suse.de> + PR middle-end/38212 + * gcc.c-torture/execute/pr38212.c: New testcase. + +2009-06-29 Richard Guenther <rguenther@suse.de> + PR tree-optimization/40579 * gcc.c-torture/execute/pr40579.c: New testcase. diff --git a/gcc/testsuite/gcc.c-torture/execute/pr38212.c b/gcc/testsuite/gcc.c-torture/execute/pr38212.c new file mode 100644 index 0000000..867d4c1 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr38212.c @@ -0,0 +1,22 @@ +int __attribute__((noinline)) +foo (int *__restrict p, int i) +{ + int *__restrict q; + int *__restrict r; + int v, w; + q = p + 1; + r = q - i; + v = *r; + *p = 1; + w = *r; + return v + w; +} +extern void abort (void); +int main() +{ + int i = 0; + if (foo (&i, 1) != 1) + abort (); + return 0; +} + |