diff --git a/gen/module.cpp b/gen/module.cpp index fcdb811ef5..0119b6aa21 100644 --- a/gen/module.cpp +++ b/gen/module.cpp @@ -59,6 +59,13 @@ #endif #endif +#if LDC_LLVM_VER >= 304 +// FIXME: This is from driver/ldc-version.h. +namespace ldc { +extern const char * const ldc_version; +} +#endif + static llvm::cl::opt preservePaths("op", llvm::cl::desc("Do not strip paths from source file"), llvm::cl::ZeroOrMore); @@ -594,6 +601,17 @@ llvm::Module* Module::genLLVMModule(llvm::LLVMContext& context) llvm::MDNode::get(ir.context(), ir.LinkerMetadataArgs)); #endif +#if LDC_LLVM_VER >= 304 + // Emit ldc version as llvm.ident metadata. + llvm::NamedMDNode *IdentMetadata = ir.module->getOrInsertNamedMetadata("llvm.ident"); + std::string Version("ldc version "); + Version.append(ldc::ldc_version); + llvm::Value *IdentNode[] = { + llvm::MDString::get(ir.context(), Version) + }; + IdentMetadata->addOperand(llvm::MDNode::get(ir.context(), IdentNode)); +#endif + // verify the llvm verifyModule(*ir.module);