Browse Source

Refine DemangleFunctionName.

Xiang Li 7 years ago
parent
commit
aed4f7a7b0
1 changed files with 6 additions and 7 deletions
  1. 6 7
      lib/HLSL/DxilUtil.cpp

+ 6 - 7
lib/HLSL/DxilUtil.cpp

@@ -24,6 +24,7 @@
 #include "llvm/IR/Instructions.h"
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/IRBuilder.h"
+#include "dxc/Support/Global.h"
 
 using namespace llvm;
 using namespace hlsl;
@@ -128,17 +129,15 @@ void PrintDiagnosticHandler(const llvm::DiagnosticInfo &DI, void *Context) {
 }
 
 StringRef DemangleFunctionName(StringRef name) {
-  size_t nameEnd = name.find_first_of("@");
-  if (nameEnd == StringRef::npos) {
+  if (!name.startswith("\01?")) {
     // Name don't mangled.
     return name;
   }
 
-  size_t nameBegin = name.find_first_of("\01?");
-  if (nameBegin != StringRef::npos)
-    return name.substr(2, nameEnd - 2);
-  else
-    return name.substr(0, nameEnd);
+  size_t nameEnd = name.find_first_of("@");
+  DXASSERT(nameEnd != StringRef::npos, "else Name don't mangled but has \01?");
+
+  return name.substr(2, nameEnd - 2);
 }
 
 std::unique_ptr<llvm::Module> LoadModuleFromBitcode(llvm::MemoryBuffer *MB,