Mail Archives: djgpp/1999/11/20/12:53:03
From: | Laurence Withers <lwithers AT lwithers DOT demon DOT co DOT uk>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Issues with 'gxx -O -fomit-frame-pointer' and exceptions?
|
Date: | Sat, 20 Nov 1999 16:47:16 +0000
|
Message-ID: | <e$yOxAAUCtN4EAR0@lwithers.demon.co.uk>
|
NNTP-Posting-Host: | lwithers.demon.co.uk
|
X-NNTP-Posting-Host: | lwithers.demon.co.uk:194.222.80.1
|
X-Trace: | news.demon.co.uk 943116503 nnrp-01:1172 NO-IDENT lwithers.demon.co.uk:194.222.80.1
|
X-Complaints-To: | abuse AT demon DOT net
|
MIME-Version: | 1.0
|
X-Newsreader: | Turnpike (32) Version 4.01 <WCcCG$mmNL32sYSf46vBeC80CR>
|
Lines: | 54
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Reply-To: | djgpp AT delorie DOT com
|
Hi,
I have come across something I don't understand when compiling code.
Whilst writing a small utility, I found that if you catch a C++
exception in main() and then return, the program will crash if you have
compiled it with the options '-O -fomit-frame-pointer' (that's -O, -O2
or -O3).
'gcc -v':
Reading specs from c:/bin/djgpp/lib/specs
gcc version 2.95 19990728 (release)
- sample program -------------------------------------------------------
#include <iostream>
class Exception { };
int main()
{
try {
char c = 0;
cout << "Throw exception [yY]? ";
cin.get(c);
if(c == 'y' || c == 'Y') {
cout << "Throwing..." << endl;
throw Exception();
}
cout << "No exception..." << endl;
}
catch(...) {
cout << "Exception caught..." << endl;
return -1;
}
cout << "No error." << endl;
return 0;
}
- end ------------------------------------------------------------------
Try compiling with 'gcc -O -fomit-frame-pointer -g -o test.exe test.cpp'
and then running. If you enter y or Y, the exception will be caught but
the program will crash. Any other key, and there is no crash.
Now compile without -fomit-frame-pointer, and there is no crash. Compile
without -O, and there is no crash.
Well - if anybody has any idea as to what I've done wrong, please let me
know. Otherwise, I'll compile without -fomit-frame-pointer, since I
don't suppose it provides too much of an optimisation.
Thanks for your time, and bye for now,
--
Laurence Withers, lwithers AT lwithers DOT demon DOT co DOT uk
http://www.lwithers.demon.co.uk/
- Raw text -