Commit 1baee84
committed
ValueTracking] Check across single predecessors in willNotFreeBetween. (llvm#167965)
Extend willNotFreeBetween to perform simple checking across blocks to
support the case where CtxI is in a successor of the block that contains
the assume, but the assume's parent is the single predecessor of CtxI's
block.
This enables using _builtin_assume_dereferenceable to vectorize
std::find_if and co in practice.
End-to-end reproducer: https://godbolt.org/z/6jbsd4EjT
PR: llvm#167965
(cherry picked from commit eb98b65)1 parent 167c4fd commit 1baee84
File tree
2 files changed
+453
-12
lines changed- llvm
- lib/Analysis
- test/Transforms/LoopVectorize
2 files changed
+453
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
557 | 557 | | |
558 | 558 | | |
559 | 559 | | |
560 | | - | |
561 | | - | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
562 | 572 | | |
563 | 573 | | |
564 | 574 | | |
565 | 575 | | |
566 | 576 | | |
567 | | - | |
568 | | - | |
569 | | - | |
570 | | - | |
571 | | - | |
572 | | - | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
573 | 592 | | |
574 | | - | |
575 | | - | |
576 | | - | |
577 | 593 | | |
578 | | - | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
579 | 598 | | |
580 | 599 | | |
581 | 600 | | |
| |||
0 commit comments