It attempts to devirtualize a call on alloca through vtable loads.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 45498 Build 47387: arc lint + arc unit
Event Timeline
Comment Actions
Address comments and rebase.
llvm/lib/Transforms/Utils/CallPromotionUtils.cpp | ||
---|---|---|
508 | I think so. It's possible that some ill-formed vtable or the entry contains a null (function) pointer. |
Comment Actions
This depends on D71307 and wouldn't work without it. Can you take a look at that again?
llvm/unittests/Transforms/Utils/CallPromotionUtilsTest.cpp | ||
---|---|---|
37 | Can you also add a negative test case? |
Comment Actions
Address comment.
Add negative tests.
Also add a new test is derived from
clang/test/CodeGenCXX/member-function-pointer-calls.cpp which this change
combined with D69591 enables nice inlining/simplification.
nit: VTableLoad --> VTablePointerLoad