diff --git a/llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp b/llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp --- a/llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp +++ b/llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp @@ -64,8 +64,17 @@ bool runOnModule(Module &M) override { std::string Data; llvm::raw_string_ostream OS(Data); + + const std::string OriginalTriple = M.getTargetTriple(); + // Set to DXIL triple when write to bitcode. + // Only the output bitcode need to be DXIL triple. + M.setTargetTriple("dxil-ms-dx"); + WriteDXILToFile(M, OS); + // Recover triple. + M.setTargetTriple(OriginalTriple); + Constant *ModuleConstant = ConstantDataArray::get(M.getContext(), arrayRefFromStringRef(Data)); auto *GV = new llvm::GlobalVariable(M, ModuleConstant->getType(), true, diff --git a/llvm/test/tools/dxil-dis/attribute-filter.ll b/llvm/test/tools/dxil-dis/attribute-filter.ll --- a/llvm/test/tools/dxil-dis/attribute-filter.ll +++ b/llvm/test/tools/dxil-dis/attribute-filter.ll @@ -1,6 +1,6 @@ ; RUN: llc %s --filetype=obj -o - | dxil-dis -o - | FileCheck %s -; CHECK: target triple = "dxil-unknown-shadermodel6.7-library" +; CHECK: target triple = "dxil-ms-dx" target triple = "dxil-unknown-shadermodel6.7-library" ; CHECK: Function Attrs: nounwind readnone diff --git a/llvm/test/tools/dxil-dis/triple.ll b/llvm/test/tools/dxil-dis/triple.ll new file mode 100644 --- /dev/null +++ b/llvm/test/tools/dxil-dis/triple.ll @@ -0,0 +1,5 @@ +; RUN: llc --filetype=obj %s -o - | dxil-dis -o - | FileCheck %s +target triple = "dxil-unknown-shadermodel6.7-library" + +; Make sure triple updated to dxil. +; CHECK:target triple = "dxil-ms-dx"