aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-03-31 18:37:22 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-03-31 18:37:22 +0000
commit9c0c34c2bbc9181554bd3e7ae88ca3c640920cbc (patch)
tree304f1bfb1eed1c6e548c9a063ed9ffd2eba0f0c8 /gcc
parentc80a540338e5809cdf058b13e23e30585219a0fa (diff)
downloadgcc-9c0c34c2bbc9181554bd3e7ae88ca3c640920cbc.zip
gcc-9c0c34c2bbc9181554bd3e7ae88ca3c640920cbc.tar.gz
gcc-9c0c34c2bbc9181554bd3e7ae88ca3c640920cbc.tar.bz2
Add testcases for PR43464.
Co-Authored-By: Richard Guenther <rguenther@suse.de> From-SVN: r157886
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog.graphite28
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-pr43464-1.c18
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-pr43464.c63
3 files changed, 109 insertions, 0 deletions
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 785ded3..9b55225 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,3 +1,31 @@
+2010-03-23 Sebastian Pop <sebastian.pop@amd.com>
+
+ * tree-ssa-copy.c: Revert this previous change:
+ (init_copy_prop): Loop closed phi nodes cancontain more than one
+ argument.
+ (execute_copy_prop): Revert the previous change: do not call
+ rewrite_into_loop_closed_ssa.
+
+2010-03-21 Sebastian Pop <sebastian.pop@amd.com>
+ Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/43464
+ * tree-ssa-copy.c (init_copy_prop): Loop closed phi nodes can
+ contain more than one argument.
+ (execute_copy_prop): Revert the previous change: do not call
+ rewrite_into_loop_closed_ssa.
+
+ * gcc.dg/graphite/id-pr43464.c: Remove compile warning.
+ * gcc.dg/graphite/id-pr43464-1.c: New.
+
+2010-03-21 Sebastian Pop <sebastian.pop@amd.com>
+
+ PR middle-end/43464
+ * tree-ssa-copy.c (execute_copy_prop): Call rewrite_into_loop_closed_ssa
+ and verify_loop_closed_ssa when copy prop is executed in the LNO.
+
+ * gcc.dg/graphite/id-pr43464.c: New.
+
2010-03-16 Sebastian Pop <sebastian.pop@amd.com>
* graphite-sese-to-poly.c (graphite_loop_normal_form): Add the IV bump
diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr43464-1.c b/gcc/testsuite/gcc.dg/graphite/id-pr43464-1.c
new file mode 100644
index 0000000..d5a8359
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/id-pr43464-1.c
@@ -0,0 +1,18 @@
+typedef struct regnode
+{
+ char flags;
+} regnode;
+extern const unsigned char A[];
+
+char *foo (regnode *c, char *s, int norun)
+{
+ int uskip;
+ while (s + (uskip = A[*s]))
+ {
+ if ((c->flags || bar (c)) && norun)
+ goto got_it;
+ s += uskip;
+ }
+ got_it:
+ return s;
+}
diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr43464.c b/gcc/testsuite/gcc.dg/graphite/id-pr43464.c
new file mode 100644
index 0000000..a8e67dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/graphite/id-pr43464.c
@@ -0,0 +1,63 @@
+typedef struct sv SV;
+typedef struct regnode
+{
+ char flags;
+} regnode;
+typedef struct regexp
+{
+} regexp;
+typedef struct cop
+{
+ SV *cop_warnings;
+} COP;
+extern const unsigned char PL_utf8skip[];
+extern char PL_dowarn;
+extern COP *volatile PL_curcop;
+char *
+S_find_byclass (regexp * prog, regnode * c, char *s, char *strend,
+ char *startpos, int norun)
+{
+ register long unsigned int uskip;
+ char *e;
+ switch (((c)->flags))
+ {
+ case 17:
+ {
+ while (s + (uskip = PL_utf8skip[*s]) <= strend)
+ {
+ if (c->flags || S_reginclass (c))
+ if (norun || S_regtry (prog, s))
+ goto got_it;
+ s += uskip;
+ }
+ unsigned long c, f;
+ long unsigned int len;
+ {
+ while (s <= e)
+ {
+ c = Perl_utf8n_to_uvuni (s, 13, &len,
+ (((PL_curcop->cop_warnings !=
+ ((SV *) ((void *) 0)))
+ && PL_dowarn)) ? 0 : 0x00FF);
+ if (c == 0 && (norun || S_regtry (prog, s)))
+ if (f != c && (norun || S_regtry (prog, s)))
+ goto got_it;
+ }
+ }
+ }
+ }
+got_it:
+ return s;
+}
+Perl_re_intuit_start (regexp * prog)
+{
+ S_find_byclass (prog, 0, 0, 0, 0, 1);
+}
+Perl_regexec_flags (register regexp * prog,
+ register char *strend)
+{
+ S_find_byclass (prog, 0, 0, strend, 0, 0);
+}
+S_regtry (regexp * prog, char *startpos)
+{
+}