[Issue 3753] ICE eh.c 49: Related to exception handling and alloca.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Jan 30 06:48:31 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3753
--- Comment #2 from David Simcha <dsimcha at yahoo.com> 2010-01-30 06:48:29 PST ---
import core.stdc.stdlib;
void main(string[] args) {
try { doNothing(); } catch {}
void* foo = alloca(args.length);
}
void doNothing() {}
I've had some more time to fiddle with this and more insight into what causes
it, so I've managed to get a reduced test case working. It seems like you need
to do both of the following in the same function:
1. Use exception handling either explicitly or implicitly. This can include
try-catch, try-finally, scope(exit), and struct destructors.
2. Use alloca, but **the number of bytes must not be a compile-time
constant**. This is what was messing me up before. If you replace:
void* foo = alloca(args.length);
with:
void* foo = alloca(8);
then this bug will not be triggered.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list