aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2009-12-03 16:34:56 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2009-12-03 16:34:56 +0100
commit762de626f7a5b9d1f8f5c15ec0391297624572ed (patch)
tree23def4b84a00344fca29810002be397fc180713b /gcc
parent80fa46179c1975ea1c8eaabaa2ab23d4b0269357 (diff)
downloadgcc-762de626f7a5b9d1f8f5c15ec0391297624572ed.zip
gcc-762de626f7a5b9d1f8f5c15ec0391297624572ed.tar.gz
gcc-762de626f7a5b9d1f8f5c15ec0391297624572ed.tar.bz2
re PR middle-end/42049 (ICE with -O2 - internal compiler error: in expand_expr_real_1, at expr.c:9314)
PR middle-end/42049 * builtins.c (expand_builtin_strcpy_args): Handle COMPOUND_EXPRs potentially returned from folding strcpy. * gcc.c-torture/compile/pr42049.c: New test. From-SVN: r154952
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr42049.c27
2 files changed, 32 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 24b38d2..0f9311b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/42049
+ * gcc.c-torture/compile/pr42049.c: New test.
+
2009-12-03 Quentin Ochem <ochem@adacore.com>
* gnat.dg/controlled5.adb: New test.
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42049.c b/gcc/testsuite/gcc.c-torture/compile/pr42049.c
new file mode 100644
index 0000000..b2ebe52
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr42049.c
@@ -0,0 +1,27 @@
+/* PR middle-end/42049 */
+
+extern char *strcpy (char *s1, const char *s2);
+struct S { char s[4]; };
+
+int
+foo (int x, char **y)
+{
+ char const *a;
+ char const *b;
+ struct S s[9];
+ long i;
+ if (x > 1)
+ a = y[1];
+ else
+ a = "abc";
+ if (x > 2)
+ b = y[2];
+ else
+ b = "def";
+ strcpy (s[0].s, a);
+ strcpy (s[1].s, b);
+ for (i = 2; i < x - 2 && i < 8; i++)
+ strcpy (s[i].s, y[i + 1]);
+ s[i].s[0] = '\0';
+ return 0;
+}