aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-06-29 12:20:39 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-06-29 12:20:39 +0000
commit5b21f0f37dd072967e60c5e413dbabec1eb1c837 (patch)
treee708803ab158cd132fb494655ffed7aec0ca820d /gcc/testsuite
parent09a782ebdacc6a5227ed464d47eb3cc27e252c6a (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr38212.c22
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;
+}
+