Add testcases for PR 47381.
authorH.J. Lu <hongjiu.lu@intel.com>
Sat, 6 Aug 2011 14:57:52 +0000 (14:57 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Sat, 6 Aug 2011 14:57:52 +0000 (07:57 -0700)
2011-08-06  H.J. Lu  <hongjiu.lu@intel.com>

PR target/47381
* gcc.dg/pr47381-1.c: New.
* gcc.dg/pr47381-2.c: Likewise.
* gcc.target/i386/pr47381.c: Likewise.

From-SVN: r177514

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr47381-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr47381-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr47381.c [new file with mode: 0644]

index 94f6f081b0cb94b40ea3499c2b047ce922c46ad1..e5f649caa7d319506e35ae422140f7864b9eb102 100644 (file)
@@ -1,3 +1,10 @@
+2011-08-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/47381
+       * gcc.dg/pr47381-1.c: New.
+       * gcc.dg/pr47381-2.c: Likewise.
+       * gcc.target/i386/pr47381.c: Likewise.
+
 2011-08-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR middle-end/47727
diff --git a/gcc/testsuite/gcc.dg/pr47381-1.c b/gcc/testsuite/gcc.dg/pr47381-1.c
new file mode 100644 (file)
index 0000000..738a892
--- /dev/null
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef unsigned IPos;
+typedef unsigned char uch;
+extern uch window[];
+unsigned max_chain_length;
+unsigned strstart;
+int longest_match(IPos cur_match, int len, int best_len)
+{
+    unsigned chain_length = max_chain_length;
+    register uch *scan = window + strstart;
+    register uch *match;
+    register uch scan_end1 = scan[best_len-1];
+    register uch scan_end = scan[best_len];
+    do {
+        ;
+        match = window + cur_match;
+        if (match[best_len] != scan_end ||
+            match[best_len-1] != scan_end1 ||
+            *match != *scan ||
+            *++match != scan[1]) continue;
+            best_len = len;
+    } while ( --chain_length != 0);
+    return best_len;
+}
diff --git a/gcc/testsuite/gcc.dg/pr47381-2.c b/gcc/testsuite/gcc.dg/pr47381-2.c
new file mode 100644 (file)
index 0000000..8aa7be7
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef unsigned long ulg;
+long block_start;
+typedef unsigned char uch;
+extern uch window[];
+ unsigned strstart;
+ulg flush_block (char *buf, ulg stored_len, int eof);
+ulg deflate()
+{
+    return flush_block(block_start >= 0L ? (char*)&window[(unsigned)block_start] : (char*)((void *)0), (long)strstart - block_start, (1));
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr47381.c b/gcc/testsuite/gcc.target/i386/pr47381.c
new file mode 100644 (file)
index 0000000..c4b2127
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -march=atom" } */
+
+struct foo_t {
+  int limit;
+} foo[3];
+void
+bar () {
+  int i;
+  for (i = 0; i < 3; i++) {
+    __builtin_memset (&foo[i], 0, sizeof(*foo));
+  }
+}