[PATCH] D100567: BPF: emit debuginfo for Function of DeclRefExpr if requested
David Blaikie via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 26 13:22:41 PDT 2021
dblaikie added inline comments.
================
Comment at: clang/lib/CodeGen/CGExpr.cpp:2843-2844
+ CGDebugInfo *DI = CGM.getModuleDebugInfo();
+ auto *Fn = dyn_cast<llvm::Function>(LV.getPointer(*this));
+ if (DI && Fn && !Fn->getSubprogram())
+ DI->EmitFunctionDecl(FD, FD->getLocation(), T, Fn);
----------------
yonghong-song wrote:
> dblaikie wrote:
> > It looks like there isn't any test coverage for the case where Fn is null here (I added an assertion that Fn is non-null and it didn't fire when running check-clang) - please add some to this patch. (I'd like to then look at those cases to better understand when they come up and whether there's a different/better way to phrase this code to handle those cases)
> Sorry. It is my fault. Tested with a slight different test case than this one in my actual test setup. Now the new test should reflect null Fn. Thanks!
Thanks for the updated test case!
I think for generality, either this code shouldn't use the `LV` value - instead calling `GetOrCreateLLVMFunction` (though that's probably not great - since that would involve things like going through ConvertType and other shenanigans in `GetAddrOfFunction` - I guess if pieces of `GetAddrToFunction`, `EmitFunctionDeclPointer`, and `EmitFunctionDeclPointer` were split up maybe it could be done - or changet he return value to include the raw llvm::Function result in addition to the LValue (& keep the existing function name returning just the LValue for other callers)) - or doing more work to unwrap the Constant - maybe it would be enough to use "stripPointerCasts" & that'd get you something you can cast to llvm::Function?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D100567/new/
https://reviews.llvm.org/D100567
More information about the cfe-commits
mailing list