D to C compiler?

Brad Roberts braddr at puremagic.com
Sun Jan 25 12:37:03 PST 2009


Bill Baxter wrote:
> On Mon, Jan 26, 2009 at 5:01 AM, Jarrett Billingsley
> <jarrett.billingsley at gmail.com> wrote:
>> On Sun, Jan 25, 2009 at 2:11 PM, dsimcha <dsimcha at yahoo.com> wrote:
>>> == Quote from Nick Sabalausky (a at a.a)'s article
>>>> - Like Denis said, I've heard LLVM is supposed to have a plain-C backend,
>>>> but I don't know how far along that is or if it's working with LDC (and from
>>>> what I hear, even LDC itself isn't quite production-ready just yet, but it
>>>> is movng along quickly).
>>> This is true.  I've played around w/ this C back end w/ some toy programs and and
>>> it works reasonably well, but I forgot about it.  At any rate, could this be used
>>> as a temporary kludge to get LDC "working" on unsupported platforms like Windows
>>> until it works natively?  Basically, LDC for Windows and other unsupported
>>> platforms would compile the D code to C, and then compile the C code w/ the native
>>> C compiler for the platform.
>> The problem with LDC on Windows is not that LLVM doesn't have a
>> backend for Windows; it does.  It's just that LLVM doesn't yet support
>> Windows exception handling.  Using the C backend wouldn't help there.
> 
> I would think a C backend would be converting exceptions into portable
> setjmp/longjmp.  That's the only way to emulate exceptions in C as far
> as I know.  Not so?
> 
> --bb

It could, but then it still wouldn't necessarily interact properly with
other C++ or D code eh mechanisms which aren't sjlj based.  On unix,
sjlj exceptions aren't used anymore.  I'm not sure about windows.  The
presentation I saw that went through win64 showed that at least those
weren't sjlj but rather closely matched unix, using lookup tables to do
the unwinding.

Later,
Brad



More information about the Digitalmars-d mailing list