# HG changeset patch # User Christian Kamm # Date 1238266897 -3600 # Node ID f528e55fb32fdc7d1faae8b67204ac404f834590 # Parent 7d28dcbff23e5ab6fc31fd8a7b44c09a2e5ef52b Force initialize the runtime module in Module::genLLVMModule. It is required for all non-trivial D modules anyway, so why load it lazily? This fixes run/typeid_83.d (DtoDeclareTypeInfo expects runtime to be initialized) diff -r 7d28dcbff23e -r f528e55fb32f gen/runtime.cpp --- a/gen/runtime.cpp Sat Mar 28 19:16:53 2009 +0100 +++ b/gen/runtime.cpp Sat Mar 28 20:01:37 2009 +0100 @@ -36,7 +36,9 @@ Logger::println("*** Initializing D runtime declarations ***"); LOG_SCOPE; - LLVM_D_BuildRuntimeModule(); + if (!M) + LLVM_D_BuildRuntimeModule(); + return true; } diff -r 7d28dcbff23e -r f528e55fb32f gen/toir.cpp --- a/gen/toir.cpp Sat Mar 28 19:16:53 2009 +0100 +++ b/gen/toir.cpp Sat Mar 28 20:01:37 2009 +0100 @@ -2585,8 +2585,8 @@ void backend_init() { - // now lazily loaded - //LLVM_D_InitRuntime(); + // LLVM_D_InitRuntime is done in Module::genLLVMModule + // since it requires the semantic pass to be done } void backend_term() diff -r 7d28dcbff23e -r f528e55fb32f gen/toobj.cpp --- a/gen/toobj.cpp Sat Mar 28 19:16:53 2009 +0100 +++ b/gen/toobj.cpp Sat Mar 28 20:01:37 2009 +0100 @@ -134,6 +134,8 @@ error("is missing 'class ClassInfo'"); fatal(); } + + LLVM_D_InitRuntime(); // process module members for (int k=0; k < members->dim; k++) {