summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-15 12:44:42 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-15 12:44:42 +0000
commit58e1c1418997fc6393f4036fc7df6a8126c29b27 (patch)
tree7630ccf83ec9334c3af825cd741aecbed0275902
parentb51f4775c054afd8c3901eb6caad4b3fc9832831 (diff)
downloadgcc-58e1c1418997fc6393f4036fc7df6a8126c29b27.tar.gz
2008-05-15 Richard Guenther <rguenther@suse.de>
PR middle-end/36244 * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY. * tree-flow-inline.h (unmodifiable_var_p): Memory tags never represent unmodifiable vars. * gcc.dg/torture/pr36244.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135336 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr36244.c39
-rw-r--r--gcc/tree-flow-inline.h2
-rw-r--r--gcc/tree-ssa-alias.c1
5 files changed, 52 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9a91ab4ea90..d30ef0ffc44 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2008-05-15 Richard Guenther <rguenther@suse.de>
+ PR middle-end/36244
+ * tree-ssa-alias.c (new_type_alias): Do not set TREE_READONLY.
+ * tree-flow-inline.h (unmodifiable_var_p): Memory tags never
+ represent unmodifiable vars.
+
+2008-05-15 Richard Guenther <rguenther@suse.de>
+
* tree-dfa.c (refs_may_alias_p): Allow all kinds of
INDIRECT_REF and TARGET_MEM_REF.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 10769c8b2c3..56493e03fdd 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-15 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/36244
+ * gcc.dg/torture/pr36244.c: New testcase.
+
2008-05-15 Eric Botcazou <ebotcazou@adacore.com>
* gnat.dg/discr8.ad[sb]: New test.
diff --git a/gcc/testsuite/gcc.dg/torture/pr36244.c b/gcc/testsuite/gcc.dg/torture/pr36244.c
new file mode 100644
index 00000000000..9daa29e2f10
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr36244.c
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -ftree-parallelize-loops=4" } */
+
+struct p7prior_s {
+ int mnum; /* number of mat emission Dirichlet mixtures */
+ float mq[200]; /* probabilities of mnum components */
+ float m[200][20]; /* match emission terms per mix component */
+};
+
+struct p7prior_s *default_amino_prior(void);
+struct p7prior_s *P7AllocPrior(void);
+
+struct p7prior_s *
+default_amino_prior(void)
+{
+ struct p7prior_s *pri;
+ int x, q;
+
+ static float defmq[5] = {
+ 0.178091, 0.056591, 0.0960191, 0.0781233, 0.0834977 };
+ static float defm[5][6] = {
+ { 0.270671, 0.039848, 0.017576, 0.016415, 0.014268, 0.216147 },
+ { 0.021465, 0.010300, 0.011741, 0.010883, 0.385651, 0.029156 },
+ { 0.561459, 0.045448, 0.438366, 0.764167, 0.087364, 0.583402 },
+ { 0.070143, 0.011140, 0.019479, 0.094657, 0.013162, 0.073732 },
+ { 0.041103, 0.014794, 0.005610, 0.010216, 0.153602, 0.012049 }
+ };
+
+ pri = P7AllocPrior();
+ pri->mnum = 5;
+ for (q = 0; q < pri->mnum; q++)
+ {
+ pri->mq[q] = defmq[q];
+ for (x = 0; x < 6; x++)
+ pri->m[q][x] = defm[q][x];
+ }
+ return pri;
+}
+
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h
index a4fe9c29c22..9e8edc6bed1 100644
--- a/gcc/tree-flow-inline.h
+++ b/gcc/tree-flow-inline.h
@@ -1545,7 +1545,7 @@ unmodifiable_var_p (const_tree var)
var = SSA_NAME_VAR (var);
if (MTAG_P (var))
- return TREE_READONLY (var) && (TREE_STATIC (var) || MTAG_GLOBAL (var));
+ return false;
return TREE_READONLY (var) && (TREE_STATIC (var) || DECL_EXTERNAL (var));
}
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index a054329e8d4..431f05aff97 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -3436,7 +3436,6 @@ new_type_alias (tree ptr, tree var, tree expr)
ali = add_may_alias_for_new_tag (tag, var);
set_symbol_mem_tag (ptr, ali);
- TREE_READONLY (tag) = TREE_READONLY (var);
MTAG_GLOBAL (tag) = is_global_var (var);
}