diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2011-08-06 14:57:52 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2011-08-06 07:57:52 -0700 |
commit | 56b6687b9ea6124dd91ae0d689db1db3acc98e63 (patch) | |
tree | e0053c26ed47d6c2c9063657636f3d5dfaa908df /gcc | |
parent | 8f2b8cdefe723ec391bdcd8ce4e1931bd71418b6 (diff) | |
download | gcc-56b6687b9ea6124dd91ae0d689db1db3acc98e63.zip gcc-56b6687b9ea6124dd91ae0d689db1db3acc98e63.tar.gz gcc-56b6687b9ea6124dd91ae0d689db1db3acc98e63.tar.bz2 |
Add testcases for PR 47381.
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr47381-1.c | 26 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr47381-2.c | 13 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr47381.c | 13 |
4 files changed, 59 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 94f6f08..e5f649c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,12 @@ 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 * gcc.dg/pr47727.c: New. diff --git a/gcc/testsuite/gcc.dg/pr47381-1.c b/gcc/testsuite/gcc.dg/pr47381-1.c new file mode 100644 index 0000000..738a892 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47381-1.c @@ -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 index 0000000..8aa7be7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr47381-2.c @@ -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 index 0000000..c4b2127 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr47381.c @@ -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)); + } +} |