summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Signals.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2015-11-08 08:04:40 +0000
committerHal Finkel <hfinkel@anl.gov>2015-11-08 08:04:40 +0000
commitf046f72efa55cd7b2f6bfd591b9b0d65ed3a3cc6 (patch)
tree13adc28c453224f3160ca55da7ba8f9d30152c15 /llvm/lib/Support/Signals.cpp
parentb2221842231dd55a98ee0b57085eec1e515787c3 (diff)
downloadbcm5719-llvm-f046f72efa55cd7b2f6bfd591b9b0d65ed3a3cc6.tar.gz
bcm5719-llvm-f046f72efa55cd7b2f6bfd591b9b0d65ed3a3cc6.zip
[PowerPC] Fix LoopPreIncPrep not to depend on SCEV constant simplifications
Under most circumstances, if SCEV can simplify X-Y to a constant, then it can also simplify Y-X to a constant. However, there is no guarantee that this is always true, and concensus is not to consider that a correctness bug in SCEV (although it is undesirable). PPCLoopPreIncPrep gathers pointers used to access memory (via loads, stores and prefetches) into buckets, where in each bucket the relative pointer offsets are constant. We used to keep each bucket as a multimap, where SCEV's subtraction operation was used to define the ordering predicate. Instead, use a fixed SCEV base expression for each bucket, record the constant offsets from that base expression, and adjust it later, if desirable, once all pointers have been collected. Doing it this way should be more compile-time efficient than the previous scheme (in addition to making the implementation less sensitive to SCEV simplification quirks). Fixes PR25170. llvm-svn: 252417
Diffstat (limited to 'llvm/lib/Support/Signals.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud