- Store intrinsic ID in ParseMemoryInst instead of a boolean flag IsTargetMemInst. This will make it easier to add support for target-independent intrinsics.
- Extract the complex multiline conditions from EarlyCSE::processNode into a new function getMatchingValue.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/lib/Transforms/Scalar/EarlyCSE.cpp | ||
---|---|---|
1287–1288 | The lookup can return an "empty" LoadValue, one that has DefInst set to nullptr. In that case, getMatchingValue will also return nullptr, so we need this check. |
Removed the bool argument to getMatchingValue. Added comments explaining how the return value is used.
I think it looks like this patch is causing EarlyCSE to crash with expensive checks enabled: http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-expensive/17662/consoleFull#-261651283a1ca8a51-895e-46c6-af87-ce24fa4cd561. This commit is the only CSE/MemorySSA related change in the build that started crashing.
It would be great if you could take a look or revert if it takes longer to fix.
Thanks, looks like green dragon is happy now with expensive checks http://green.lab.llvm.org/green/job/clang-stage1-cmake-RA-expensive/17679/
Is InValFirst the same thing as !MemInst.isLoad()? Is there some useful semantic difference I'm missing?