patches/gcc/3.3.1/pr11162-1-test.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun May 20 13:48:26 2007 +0000 (2007-05-20)
changeset 112 ea15433daba0
permissions -rw-r--r--
Ah! I finally have a progress bar that doesn't stall the build!
- pipe size in Linux is only 8*512=4096 bytes
- pipe size is not setable
- when the feeding process spits out data faster than the eating
process can read it, then the feeding process stalls after 4KiB
of data sent to the pipe
- for us, the progress bar would spawn a sub-shell every line,
and the sub-shell would in turn spawn a 'date' command.
Which was sloooww as hell, and would cause some kind of a
starvation: the pipe was full most of the time, and the
feeding process was stalled all this time.

Now, we use internal variables and a little hack based onan offset
to determine the elapsed time. Much faster this way, but still
CPU-intensive.
     1 --- /dev/null	Sat Dec 14 13:56:51 2002
     2 +++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11162-1.c	Sun Sep 14 16:24:41 2003
     3 @@ -0,0 +1,22 @@
     4 +/*
     5 + * PR optimization/11162
     6 + * Reporter: Toshiyasu Morita <tm@kloo.net>
     7 + * Summary: [3.4 Regression] [-fnew-ra] ICE compiling channel.i on sh
     8 + * Keywords: ice-on-valid-code
     9 + * Description:
    10 + * [ICE] when channel.i from stress-1.17 is compiled with options:
    11 + * -O2 -m4 -fnew-ra
    12 + * ...
    13 + * The CFG code gets confused by the addition of a USE insn after a sibcall.
    14 + * Sibcalls are supposed to end the block (and the function!), so the fact
    15 + * that we have an instruction following one (even if its fake) is confusing.
    16 + *
    17 + * testcase tweaked by dank@kegel.com
    18 + */
    19 +/* { dg-do compile } */
    20 +/* { dg-options "-O2 -fnew-ra" } */
    21 +
    22 +int foo(char *p1)
    23 +{
    24 +	return bar(p1);
    25 +}