aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-04-23 15:32:22 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-04-23 15:32:22 +0000
commit7a38245d60291e0b41f565dc9a9ea6bc96bb933e (patch)
tree03b3f5069d9a9a5e33ea30e7bae9db19aee3f11e /gcc
parent8fd8a06f0ed4378f8d5cc97994c7bf0e6e397461 (diff)
downloadgcc-7a38245d60291e0b41f565dc9a9ea6bc96bb933e.zip
gcc-7a38245d60291e0b41f565dc9a9ea6bc96bb933e.tar.gz
gcc-7a38245d60291e0b41f565dc9a9ea6bc96bb933e.tar.bz2
re PR middle-end/41734 (ICE in cgraph_mark_functions_to_output, at cgraphunit.c:1137 with -fwhopr)
2010-04-23 Richard Guenther <rguenther@suse.de> PR lto/41734 * gcc.dg/lto/20100423-2_0.c: New testcase. * gcc.dg/lto/20100423-2_0.c: Likewise. From-SVN: r158670
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/lto/20100423-2_0.c25
-rw-r--r--gcc/testsuite/gcc.dg/lto/20100423-2_1.c20
3 files changed, 51 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 28b1201..dacc10e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2010-04-23 Richard Guenther <rguenther@suse.de>
+ PR lto/41734
+ * gcc.dg/lto/20100423-2_0.c: New testcase.
+ * gcc.dg/lto/20100423-2_0.c: Likewise.
+
+2010-04-23 Richard Guenther <rguenther@suse.de>
+
PR lto/43455
* gcc.dg/lto/20100423-1_0.c: New testcase.
* gcc.dg/lto/20100423-1_1.c: Likewise.
diff --git a/gcc/testsuite/gcc.dg/lto/20100423-2_0.c b/gcc/testsuite/gcc.dg/lto/20100423-2_0.c
new file mode 100644
index 0000000..4f98da4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20100423-2_0.c
@@ -0,0 +1,25 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-O2 -flto} {-O2 -fwhopr} {-O3 -flto} {-O3 -fwhopr}} } */
+
+typedef unsigned int size_t;
+extern struct _IO_FILE *stderr;
+typedef unsigned char uch;
+extern uch inbuf[];
+unsigned insize;
+char *progname;
+extern void read_error (void);
+int fill_inbuf(int eof_ok)
+{
+ if (insize == 0)
+ {
+ if (eof_ok)
+ return -1;
+ read_error();
+ }
+ return inbuf[0];
+}
+void read_error(void)
+{
+ __builtin_fprintf(stderr, "\n%s: ", progname);
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20100423-2_1.c b/gcc/testsuite/gcc.dg/lto/20100423-2_1.c
new file mode 100644
index 0000000..546de65
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20100423-2_1.c
@@ -0,0 +1,20 @@
+typedef unsigned char uch;
+uch inbuf[8];
+extern unsigned insize;
+unsigned inptr;
+int to_stdout = 0;
+int force = 0;
+extern int fill_inbuf (int);
+int get_method(int in)
+{
+ char magic[2];
+ if (force && to_stdout)
+ magic[0] = (char)(inptr < insize ? inbuf[inptr++] : fill_inbuf(1));
+ else
+ magic[1] = (char)(inptr < insize ? inbuf[inptr++] : fill_inbuf(0));
+}
+int main()
+{
+ return 0;
+}
+