isKnownNonNullFromDominatingCondition is able to prove non-null basing on br or guard
by %p != null condition, but is unable to do so basing on (%p != null) && %other_cond.
This patch allows it to do so.
Details
Details
- Reviewers
Ka-Ka craig.topper spatel fedor.sergeev reames - Commits
- rG2dbbd64cb7b3: Re-enable "[ValueTracking] Teach isKnownNonNullFromDominatingCondition about…
rG3271f379a9cd: Revert rL338990 to see if it causes sanitizer failures
rG34b0666be9e6: [ValueTracking] Teach isKnownNonNullFromDominatingCondition about AND
rL339005: Re-enable "[ValueTracking] Teach isKnownNonNullFromDominatingCondition about…
rL338994: Revert rL338990 to see if it causes sanitizer failures
rL338990: [ValueTracking] Teach isKnownNonNullFromDominatingCondition about AND
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
test/Transforms/LICM/hoist-deref-load.ll | ||
---|---|---|
601 ↗ | (On Diff #158699) | check |
Comment Actions
I was wondering where is a good place for this: https://bugs.llvm.org/show_bug.cgi?id=38349 (in the true block, we know some info about bits of x, so this info should be propagated to the whole block)
Comment Actions
Here we are dealing with i1 AND only, so it should not be relevant here. The example in this bug looks like something to handle in InstCombine.
Comment Actions
This patch has exposed sanitizer failures, likely something that already existed and now got exposed. http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/14348. Investigating.