]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/37669 (ice for legal code with -O2)
authorAndrew Pinski <andrew_pinski@playstation.sony.com>
Mon, 29 Sep 2008 21:23:52 +0000 (21:23 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Mon, 29 Sep 2008 21:23:52 +0000 (14:23 -0700)
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

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr37669.c [new file with mode: 0644]

index 26d16dd827d8e90a25a2aa163bd6a83c0e96661b..5b47a239aaf088f43d84ea0da79a41adb3d5af78 100644 (file)
@@ -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 (file)
index 0000000..9b003cd
--- /dev/null
@@ -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);
+}