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