This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/49230] please provide workaround for setjmp/longjmp in mingw32
- From: "ktietz at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 29 Jun 2011 17:30:46 +0000
- Subject: [Bug rtl-optimization/49230] please provide workaround for setjmp/longjmp in mingw32
- Auto-submitted: auto-generated
- References: <bug-49230-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49230
Kai Tietz <ktietz at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
--- Comment #3 from Kai Tietz <ktietz at gcc dot gnu.org> 2011-06-29 17:30:41 UTC ---
Well, this test-file helps pretty much to see your problem.
As you didn't mentioned, which options you are specifying to gcc on
complilation, I assumed that you were using -fomit-frame-pointer and -O1. But
well, as described later, it doesn't really matters much here.
As register ebp is used by gcc as internal frame-register. Even if you are
specifying -fomit-frame-pointer as option, the main function will still have a
frame-pointer setup. Also ebp-register is a callee-saved register, which means
its use as local-register variable is in general nothing wise to do.
I compiled program with 4.6.0 gcc using mingw-w64 as runtime, and I get a crash
when main-function exits. This is to be expected, as epilogue for main is
movl %ebp, %esp
pop %ebp
ret
but output looks as expected:
$ ./tst.exe
start
foobar 10
foobar 9
foobar 8
foobar 7
foobar 6
foobar 5
foobar 4
foobar 3
foobar 2
foobar 1
foobar 0
bar
So I mark this bug as invalid. If for you the code crashes by using mingw.org,
well then file a report to them. This is for sure no gcc issue.
Regards,
Kai