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 42247 Build 42675: 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