From 362defac9072f9bfd81fdfeb4dc8db9226f38d5f Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Fri, 12 Oct 2018 15:40:54 -0700 Subject: [PATCH] Code cleanup. (#1596) --- include/dxc/HLSL/DxilRootSignature.h | 4 ++++ lib/HLSL/DxilRootSignature.cpp | 13 +++++++++++++ lib/HLSL/DxilUtil.cpp | 17 ++++++----------- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/include/dxc/HLSL/DxilRootSignature.h b/include/dxc/HLSL/DxilRootSignature.h index 37500be40..3a7ab7b1d 100644 --- a/include/dxc/HLSL/DxilRootSignature.h +++ b/include/dxc/HLSL/DxilRootSignature.h @@ -359,6 +359,10 @@ bool VerifyRootSignatureWithShaderPSV(_In_ const DxilVersionedRootSignatureDesc _In_ uint32_t PSVSize, _In_ llvm::raw_ostream &DiagStream); +// standalone verification +bool VerifyRootSignature(_In_ const DxilVersionedRootSignatureDesc *pDesc, + _In_ llvm::raw_ostream &DiagStream); + } // namespace hlsl #endif // __DXC_ROOTSIGNATURE__ diff --git a/lib/HLSL/DxilRootSignature.cpp b/lib/HLSL/DxilRootSignature.cpp index 9e44d3d18..a1d988f3e 100644 --- a/lib/HLSL/DxilRootSignature.cpp +++ b/lib/HLSL/DxilRootSignature.cpp @@ -1679,4 +1679,17 @@ bool VerifyRootSignatureWithShaderPSV(const DxilVersionedRootSignatureDesc *pDes return true; } +bool VerifyRootSignature(_In_ const DxilVersionedRootSignatureDesc *pDesc, + _In_ llvm::raw_ostream &DiagStream) { + try { + RootSignatureVerifier RSV; + DiagnosticPrinterRawOStream DiagPrinter(DiagStream); + RSV.VerifyRootSignature(pDesc, DiagPrinter); + } catch (...) { + return false; + } + + return true; +} + } // namespace hlsl diff --git a/lib/HLSL/DxilUtil.cpp b/lib/HLSL/DxilUtil.cpp index b17bfcb52..2079284cd 100644 --- a/lib/HLSL/DxilUtil.cpp +++ b/lib/HLSL/DxilUtil.cpp @@ -191,14 +191,9 @@ void PrintUnescapedString(StringRef Name, raw_ostream &Out) { std::unique_ptr LoadModuleFromBitcode(llvm::MemoryBuffer *MB, llvm::LLVMContext &Ctx, std::string &DiagStr) { - raw_string_ostream DiagStream(DiagStr); - llvm::DiagnosticPrinterRawOStream DiagPrinter(DiagStream); - LLVMContext::DiagnosticHandlerTy OrigHandler = Ctx.getDiagnosticHandler(); - void *OrigContext = Ctx.getDiagnosticContext(); - Ctx.setDiagnosticHandler(PrintDiagnosticHandler, &DiagPrinter, true); + // Note: the DiagStr is not used. ErrorOr> pModule( llvm::parseBitcodeFile(MB->getMemBufferRef(), Ctx)); - Ctx.setDiagnosticHandler(OrigHandler, OrigContext); if (std::error_code ec = pModule.getError()) { return nullptr; } @@ -351,23 +346,23 @@ llvm::Instruction *SkipAllocas(llvm::Instruction *I) { llvm::Instruction *FindAllocaInsertionPt(llvm::Instruction* I) { Function *F = I->getParent()->getParent(); if (F) - return F->getEntryBlock().getFirstInsertionPt(); + return &*F->getEntryBlock().getFirstInsertionPt(); else // BB with no parent function - return I->getParent()->getFirstInsertionPt(); + return &*I->getParent()->getFirstInsertionPt(); } llvm::Instruction *FindAllocaInsertionPt(llvm::Function* F) { - return F->getEntryBlock().getFirstInsertionPt(); + return &*F->getEntryBlock().getFirstInsertionPt(); } llvm::Instruction *FirstNonAllocaInsertionPt(llvm::Instruction* I) { return SkipAllocas(FindAllocaInsertionPt(I)); } llvm::Instruction *FirstNonAllocaInsertionPt(llvm::BasicBlock* BB) { return SkipAllocas( - BB->getFirstInsertionPt()); + &*BB->getFirstInsertionPt()); } llvm::Instruction *FirstNonAllocaInsertionPt(llvm::Function* F) { return SkipAllocas( - F->getEntryBlock().getFirstInsertionPt()); + &*F->getEntryBlock().getFirstInsertionPt()); } bool IsHLSLObjectType(llvm::Type *Ty) {