diff options
author | Andrew Pinski <andrew_pinski@playstation.sony.com> | 2008-09-29 21:23:52 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2008-09-29 14:23:52 -0700 |
commit | 2dda7d28ea84a90685ca6040c10f3afec25a2473 (patch) | |
tree | e3c8555e8b895937c5b5ad086a1ca74170c71a46 /gcc | |
parent | 567075ed3155c2eaf016562367b26aa0edc2c9d6 (diff) | |
download | gcc-2dda7d28ea84a90685ca6040c10f3afec25a2473.zip gcc-2dda7d28ea84a90685ca6040c10f3afec25a2473.tar.gz gcc-2dda7d28ea84a90685ca6040c10f3afec25a2473.tar.bz2 |
re PR middle-end/37669 (ice for legal code with -O2)
2008-09-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/37669
* gcc.c-torture/compile/pr37669.c: New test.
From-SVN: r140765
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr37669.c | 35 |
2 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 26d16dd..5b47a23 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-09-29 Andrew Pinski <andrew_pinski@playstation.sony.com> + + PR middle-end/37669 + * gcc.c-torture/compile/pr37669.c: New test. + 2008-09-28 Andrew Pinski <andrew_pinski@playstation.sony.com> PR target/37640 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37669.c b/gcc/testsuite/gcc.c-torture/compile/pr37669.c new file mode 100644 index 0000000..9b003cd --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr37669.c @@ -0,0 +1,35 @@ +/* This testcase used to fail because a miscompiled execute_fold_all_builtins. */ + +typedef long unsigned int size_t; +extern __inline __attribute__ ((__always_inline__)) int __attribute__ +((__nothrow__)) snprintf (char *__restrict __s, size_t __n, __const char +*__restrict __fmt, ...) { + return __builtin___snprintf_chk (__s, __n, 2 - 1, +__builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); +} +int n1, n2, n3, n4, f5, f6; +char * BackgroundGetUniqueString(void) +{ + char s[256]; + const char *chmap = +"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; + snprintf(s, sizeof(s), +"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c", + chmap[(n1 >> 0) & 0x3f], chmap[(n1 >> 6) & 0x3f], + chmap[(n1 >> 12) & 0x3f], chmap[(n1 >> 18) & 0x3f], + chmap[(n1 >> 24) & 0x3f], chmap[(n1 >> 28) & 0x3f], + chmap[(n2 >> 0) & 0x3f], chmap[(n2 >> 6) & 0x3f], + chmap[(n2 >> 12) & 0x3f], chmap[(n2 >> 18) & 0x3f], + chmap[(n2 >> 24) & 0x3f], chmap[(n2 >> 28) & 0x3f], + chmap[(n3 >> 0) & 0x3f], chmap[(n3 >> 6) & 0x3f], + chmap[(n3 >> 12) & 0x3f], chmap[(n3 >> 18) & 0x3f], + chmap[(n3 >> 24) & 0x3f], chmap[(n3 >> 28) & 0x3f], + chmap[(n4 >> 0) & 0x3f], chmap[(n4 >> 6) & 0x3f], + chmap[(n4 >> 12) & 0x3f], chmap[(n4 >> 18) & 0x3f], + chmap[(n4 >> 24) & 0x3f], chmap[(n4 >> 28) & 0x3f], + chmap[(f5 >> 12) & 0x3f], chmap[(f5 >> 18) & 0x3f], + chmap[(f5 >> 24) & 0x3f], chmap[(f5 >> 28) & 0x3f], + chmap[(f6 >> 0) & 0x3f], chmap[(f6 >> 6) & 0x3f] + ); + return __builtin_strdup(s); +} |