diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-12-03 16:34:56 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-12-03 16:34:56 +0100 |
commit | 762de626f7a5b9d1f8f5c15ec0391297624572ed (patch) | |
tree | 23def4b84a00344fca29810002be397fc180713b /gcc | |
parent | 80fa46179c1975ea1c8eaabaa2ab23d4b0269357 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr42049.c | 27 |
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; +} |