Browse Source

Code cleanup. (#1596)

Xiang Li 7 years ago
parent
commit
362defac90
3 changed files with 23 additions and 11 deletions
  1. 4 0
      include/dxc/HLSL/DxilRootSignature.h
  2. 13 0
      lib/HLSL/DxilRootSignature.cpp
  3. 6 11
      lib/HLSL/DxilUtil.cpp

+ 4 - 0
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__

+ 13 - 0
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

+ 6 - 11
lib/HLSL/DxilUtil.cpp

@@ -191,14 +191,9 @@ void PrintUnescapedString(StringRef Name, raw_ostream &Out) {
 std::unique_ptr<llvm::Module> 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<std::unique_ptr<llvm::Module>> 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) {