This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/8750: Cygwin prolog generation erroneously emitting __alloca as regular function call


>Number:         8750
>Category:       optimization
>Synopsis:       Cygwin prolog generation erroneously emitting __alloca as regular function call
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Nov 28 13:26:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     fish@infidels.org
>Release:        gcc version 3.2 20020927 (prerelease)
>Organization:
>Environment:
PIII 800MHz
Windows 2000 Pro SP3
Cygwin 1.3.16-1
gcc 3.2-3

$ uname -a
CYGWIN_NT-5.0 (censored) 1.3.16(0.65/3/2) 2002-11-22 22:18 i686 unknown
>Description:
(Note: please ignore my prior email to gcc-bugs@gcc.gnu.org as this bug report replaces it. The .zip file included in my priot email didn't include the -save-temps .i output, whereas the .zip file attached to this report does)

Dr. Ulrich Weigand (weigand@informatik.uni-erlangen.de) has analyzed this bug as follows:

"This would appear to be a gcc bug.  Specifically, what appears to happen here is that instruction scheduling moves the leal across the call to __alloca.  This in turn is caused by a bug in the cygwin prolog generation code that emits the __alloca call as a regular function call."
  
"As regular function calls do not change the stack pointer, the instruction scheduling pass concluded that it was safe to move the leal 16(%esp),%edi across the call (%edi is preserved across calls as well)."
  
"Instead, the __alloca call should have been annotated to express the fact that it changes %esp in a special way. How to best fix this I'd leave to the i386 backend maintainers; please report this bug (with testcase and explanation) to the gcc bug-tracking system."
  
"(From what I can see, the same bug exists unchanged in gcc 3.2.1 and the current pre-3.3 sources. As this particular code path is only used for cygwin, it probably wasn't noticed earlier ...)"

>How-To-Repeat:
fish@foobar ~/fishtest
$ cat fish.c
#include <stdio.h>
#include <string.h>

void foo ()
{
    char a[15000];
    a[0]=0;
    printf("String length=%d\n",strlen(a));
    memset( &a[0], 0xCD, 13371 );
    a[13371]=0;
    printf("String length=%d\n",strlen(a));
}

int main ( int argc, char* argv[] )
{
    foo();
    return 0;
}

fish@foobar ~/fishtest
$ gcc -march=i686 -g -O2 -fomit-frame-pointer -c fish.c
-Wa,-adhln=fish.c.listing.txt

fish@foobar ~/fishtest
$ gcc -march=i686 -g -O2 -fomit-frame-pointer -o fish.exe fish.o

fish@foobar ~/fishtest
$ fish
String length=2
>Fix:
1. -O0 or -O1, or...
2. -fno-omit-frame-pointer, or...
3. use memset len < 13371, or...
4. don't use largish local stack vars so as to prevent __alloca from being called/used.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-zip-compressed; name="fish2.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="fish2.zip"

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]