[Issue 10664] New: Win64: exception handling does not work with COMDAT folding
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Jul 18 00:17:28 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10664
Summary: Win64: exception handling does not work with COMDAT
folding
Product: D
Version: D1 & D2
Platform: x86_64
OS/Version: Windows
Status: NEW
Keywords: wrong-code
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: r.sagitario at gmx.de
--- Comment #0 from Rainer Schuetze <r.sagitario at gmx.de> 2013-07-18 00:17:26 PDT ---
Another excerpt from the phobos unittests:
import core.exception;
T collectException(T = Exception, E)(lazy E expression, ref E result)
{
try
{
result = expression();
}
catch (T e)
{
return e;
}
return null;
}
void main()
{
int b;
int foo() { throw new Exception("blah"); }
assert(collectException(foo(), b));
int[] a = new int[3];
collectException!RangeError(a[4], b);
}
compile with "dmd -m64 test.d" and run:
core.exception.RangeError at test(23): Range violation
----------------
0x000007F627E337DF in rt.lifetime.__setArrayAllocLength at
M:\s\d\rainers\drunti
me\src\rt\lifetime.d(283)
0x000007F627E31508 in rt.lifetime._d_newarrayT at
M:\s\d\rainers\druntime\src\rt
\lifetime.d(781)
0x000007F627E31237 in test.main.__dgliteral12
0x000007F627E31197 in test.main.foo at M:\s\d\rainers\bugs\rs144\test.d(19)
0x000007F627E311E8 in test.main.foo
0x000007F627E310AA in D main at M:\s\d\rainers\bugs\rs144\test.d(20)
0x000007F627E32FDE in rt.dmain2._d_run_main.tryExec.printInfoBlock at
M:\s\d\rai
ners\druntime\src\rt\dmain2.d(556)
0x000007F627E3222E in rt.dmain2._d_run_main at
M:\s\d\rainers\druntime\src\rt\dm
ain2.d(469)
0x000007F627E330D6 in rt.dmain2._d_run_main.tryExec.print at
M:\s\d\rainers\drun
time\src\rt\dmain2.d(567)
0x000007F627E3222E in rt.dmain2._d_run_main at
M:\s\d\rainers\druntime\src\rt\dm
ain2.d(469)
0x000007F627E321CE in rt.dmain2._d_run_main at
M:\s\d\rainers\druntime\src\rt\dm
ain2.d(463)
0x000007F627E31276 in test.main.__dgliteral13 at
M:\s\d\rainers\bugs\rs144\test.
d(23)
0x000007F627E4AD0B in core.demangle.Demangle.parseType at
M:\s\d\rainers\druntim
e\src\core\demangle.d(862)
0x000007FB2EDF1832 in BaseThreadInitThunk
0x000007FB2EF8D609 in RtlUserThreadStart
----------------
It works with -g or more specifically with
dmd -m64 -L/OPT:NOICF test.d
So it seems exception information for the two collectException instantiations
are merged.
--
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