[Issue 10664] Win64: exception handling does not work with COMDAT folding

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Sep 15 08:43:29 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=10664

--- Comment #4 from Walter Bright <bugzilla at digitalmars.com> ---
You're right, it's the handler table that is different. The handler table is
all based on offsets from the start of the function, so that works. The only
pointer in it is the pointer to the catch type (the `*__ClassZ` symbols), and
hence the only actual difference in the handler table.

The best fix I can think of for this is to embed in the catch blocks a
reference to the catch type. Then functions that differ only in catch type
won't be merged, and /OPT:NOICF will no longer be needed.

--


More information about the Digitalmars-d-bugs mailing list