== Quote from Nick Sabalausky (a@a.a)'s article > "Don" <nos...@nospam.com> wrote in message > news:inf4hj$3mg$1...@digitalmars.com... > > Nick Sabalausky wrote: > >> "spir" <denis.s...@gmail.com> wrote in message > >> news:mailman.3141.1301915290.4748.digitalmar...@puremagic.com... > >>> On 04/04/2011 07:26 AM, Nick Sabalausky wrote: > >>>> As far as LDC2, LLVM's uselessness on windows is a bit of a showstopper > >>>> for > >>>> many people. And the LLVM project doesn't appear to be interested in > >>>> doing > >>>> much about it. (Note I didn't say they *aren't* interested in getting > >>>> it > >>>> working. That's not something I could even pretend to know. I'm just > >>>> saying > >>>> that, at the very least, it *looks* like they don't care. And, for > >>>> better or > >>>> worse, perception does count for a lot.) > >>> Yop, too bad. Else, LLVM could be the one target of choice for many PL's > >>> "reference" implementation. I'd like to know rationales. > >>> > >> > >> AIUI, the standard explanation is that exception support on Windows > >> requires SEH which is covered by a patent owned by Borland/Microsoft. But > >> I have a hard time buying that explanation because non-MS compilers like > >> GCC and DMC support exceptions on windows just fine - so why not LLVM, > >> too? > > > > AFAICT, that explanation is absolute bollocks. > > > > SEH is *not* covered by a patent. The Borland patent that people talk > > about refers to a particular implementation detail which is a workaround > > for an absolutely horrific Microsoft bug. > > The idea is to use the exception handler pointer (which is in thread-local > > storage(TLS)) to track which exception table to use. > > Instead of pointing to your exception handler, it points to a thunk (one > > for each try block) which sets a pointer to the try block table, then the > > exception handler. > > The reason for doing this, is that you need a TLS slot to store which try > > block you're in. > > Unfortunately, Windows' thread local storage is hopelessly broken for > > DLLs. The exception handler pointer is just about the only TLS slot > > guaranteed to be available, so it allows you to escape the bug. > > > Interesting. (And could be another reason we need to get the DDL project up > and running again :) ) > > Now since the idea is just a straightforward application of thunks, I > > wonder if it really satisfies the patent requirement for non-obviousness. > > > > But regardless, for D, Rainer has put code into druntime which fixes the > > bug! So actually a D implementation can use any thread-local slot. > > <g> > Does that mean LLVM doesn't need exception support on Windows in order for > LDC to support exceptions on windows?
I would have thought it would still need to implement the EH tables in the same way that the runtime code in Druntime/Phobos expects it to be. But I wouldn't know just how tied to the LLVM backend LDC is with exceptions.