aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-09-22 14:14:56 +0000
committerTom de Vries <vries@gcc.gnu.org>2015-09-22 14:14:56 +0000
commit8013b816cc8b2de17db1a5115f4df482f0acbc6d (patch)
tree3c8058726d71d6ad861b9a1b055d67c73ea18031 /gcc
parent0854c7f115a0951cfedffad14491d95eb1a11f74 (diff)
downloadgcc-8013b816cc8b2de17db1a5115f4df482f0acbc6d.zip
gcc-8013b816cc8b2de17db1a5115f4df482f0acbc6d.tar.gz
gcc-8013b816cc8b2de17db1a5115f4df482f0acbc6d.tar.bz2
Handle restrict pointer references as restrict in AA
2015-09-22 Tom de Vries <tom@codesourcery.com> PR tree-optimization/67671 * tree-ssa-structalias.c (create_variable_info_for_1): Handle restrict pointer references as restrict. * g++.dg/pr67671.C: New test. From-SVN: r228015
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/pr67671.C12
-rw-r--r--gcc/tree-ssa-structalias.c3
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7eb8b6d..95db047 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-22 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/67671
+ * tree-ssa-structalias.c (create_variable_info_for_1): Handle restrict
+ pointer references as restrict.
+
2015-09-22 Chung-Lin Tang <cltang@codesourcery.com>
* config/nios2/nios2.c (nios2_legitimize_address): When handling
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9c9bc5a..bcd04a0 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-09-22 Tom de Vries <tom@codesourcery.com>
+
+ PR tree-optimization/67671
+ * g++.dg/pr67671.C: New test.
+
2015-09-22 Alexander Fomin <alexander.fomin@intel.com>
PR target/67480
diff --git a/gcc/testsuite/g++.dg/pr67671.C b/gcc/testsuite/g++.dg/pr67671.C
new file mode 100644
index 0000000..952ea4f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/pr67671.C
@@ -0,0 +1,12 @@
+// { dg-do compile }
+// { dg-options "-O2 -fdump-tree-ealias-all" }
+
+void
+f (int *__restrict__ &__restrict__ p)
+{
+ *p = 1;
+}
+
+// { dg-final { scan-tree-dump-times "clique 1 base 1" 1 "ealias" } }
+// { dg-final { scan-tree-dump-times "clique 1 base 2" 1 "ealias" } }
+// { dg-final { scan-tree-dump-times "(?n)clique .* base .*" 2 "ealias" } }
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 66772cd..1767b04 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -5684,6 +5684,9 @@ create_variable_info_for_1 (tree decl, const char *name)
vi->fullsize = tree_to_uhwi (declsize);
vi->size = vi->fullsize;
vi->is_full_var = true;
+ if (POINTER_TYPE_P (TREE_TYPE (decl))
+ && TYPE_RESTRICT (TREE_TYPE (decl)))
+ vi->only_restrict_pointers = 1;
fieldstack.release ();
return vi;
}