Just like llvm.assume, there are a lot of cases where we can just ignore llvm.experimental.noalias.scope.decl.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
The changes here all look reasonable to me. Ideally we would add test cases for the individual passes and land this before changing inlining, such that the inlining change by itself does not cause undue regressions.
llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp | ||
---|---|---|
1751 ↗ | (On Diff #315336) | This doesn't do anything :) |
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp | ||
2555 ↗ | (On Diff #315336) | I guess this makes sense with the full version (that accepts an alloca). I don't think this can happen currently. |
The guidance for these changes are mostly based on '::assume'. For some changes, I did not find a corresponding (breaking) assume test, so I did not add one for ::experimental_noalias_scope_decl.
For the others I did add testcases.
The change in BasicAliasAnalysis seemed not to be needed to get the testcase working, so I removed the BasicAliasAnalysis changes, but kept the testcase.
For the Vectorization. I currently focused on still allowing vectorization and reducing the amount of intrinsics duplication. It is likely that some finetuning will be needed in future to tackle correctness, but, with this patch, the situation should not be worse that what it is today.