Do not directly use function names to construct new name for named metadata.
authorDevang Patel <dpatel@apple.com>
Mon, 21 Jun 2010 18:36:58 +0000 (18:36 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 21 Jun 2010 18:36:58 +0000 (18:36 +0000)
"llvm.dbg.lv.~A" is not a valid name.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106438 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DebugInfo.cpp

index c5cf3ffba57c31711c604a492b5842a0a1063fd5..0d0d27cb9528a0e4d66f78867b25d1af84910632 100644 (file)
@@ -1056,7 +1056,14 @@ DIVariable DIFactory::CreateVariable(unsigned Tag, DIDescriptor Context,
     // to preserve variable info in such situation then stash it in a
     // named mdnode.
     DISubprogram Fn(getDISubprogram(Context));
-    const Twine FnLVName = Twine("llvm.dbg.lv.", Fn.getName());
+    StringRef FName = "fn";
+    if (Fn.getFunction())
+      FName = Fn.getFunction()->getName();
+    const Twine FnLVName = Twine("llvm.dbg.lv.", FName);
+    char One = '\1';
+    if (FName.startswith(StringRef(&One, 1)))
+      FName = FName.substr(1);
+
     NamedMDNode *FnLocals = M.getNamedMetadataUsingTwine(FnLVName);
     if (!FnLocals)
       FnLocals = NamedMDNode::Create(VMContext, FnLVName, NULL, 0, &M);