aprantl added a comment.

> The only drawback is that the cloned function's (the thunk's) 
> DILocalVariableNodes will not appear in the newly cloned DISubprogram's node 
> variable list. Instead, the new node points to the original function's 
> variable list. However, since the only difference between the original 
> function and the thunk is the this-ptr adjustment, the resulting debug 
> information is correct, at least in the test cases I have looked at.

Does the thunk contain any local variables other than function arguments?
What I'm getting at is: If this is only a thunk, do we need any local variables 
at all?



================
Comment at: lib/CodeGen/CGVTables.cpp:130
+// Furthermore, the function resolves any DILocalVariable nodes referenced
+// by dbg.value intrinsics so they can be properly mapped during cloning.
+static void resolveTopLevelMetadata(llvm::Function *Fn,
----------------
`///`


================
Comment at: lib/CodeGen/CGVTables.cpp:140
+
+  // Find all debug.declare intrinsics and resolve the DILocalVariable nodes
+  // they are referencing.
----------------
`debug.declare` -> (llvm.)`dbg.declare`.


================
Comment at: lib/CodeGen/CGVTables.cpp:143
+  for (llvm::Function::iterator BB = Fn->begin(), E = Fn->end(); BB != E;
+       ++BB) {
+    for (llvm::Instruction &I : *BB) {
----------------
does this work?
`for (auto &BB : Fn->getBasicBlockList())`


================
Comment at: lib/CodeGen/CGVTables.cpp:145
+    for (llvm::Instruction &I : *BB) {
+      auto *DII = dyn_cast<llvm::DbgInfoIntrinsic>(&I);
+      if (DII) {
----------------
`if (auto *DII ...`


https://reviews.llvm.org/D39396



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to