From 762de626f7a5b9d1f8f5c15ec0391297624572ed Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 3 Dec 2009 16:34:56 +0100 Subject: [PATCH] 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 --- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gcc.c-torture/compile/pr42049.c | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr42049.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 24b38d2e08e..0f9311b577b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-12-03 Jakub Jelinek + + PR middle-end/42049 + * gcc.c-torture/compile/pr42049.c: New test. + 2009-12-03 Quentin Ochem * 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 00000000000..b2ebe52ef8d --- /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; +}