This is an archive of the discontinued LLVM Phabricator instance.

llvm.noalias - SCEV can look through it
ClosedPublic

Authored by hfinkel on Apr 30 2015, 8:24 AM.

Details

Summary

This is part of the series started by D9375, and teaches ScalarEvolution to look through the intrinsic. This is necessary, for example, so that loop vectorization can proceed even with llvm.noalias intrinsics inside the loop.

While, in theory, this could lead to rewriting which removes the intrinsics, I think this is unlikely in practice except very late in the pipeline (by LoopVectorize, LSR, etc.), and we can deal with these passes specifically if that turns out to be a problem.

Diff Detail

Repository
rL LLVM

Event Timeline

hfinkel updated this revision to Diff 24715.Apr 30 2015, 8:24 AM
hfinkel retitled this revision from to llvm.noalias - SCEV can look through it.
hfinkel updated this object.
hfinkel edited the test plan for this revision. (Show Details)
hfinkel added reviewers: chandlerc, reames, atrick.
hfinkel added a subscriber: Unknown Object (MLST).
reames resigned from this revision.Oct 8 2015, 10:27 AM
reames removed a reviewer: reames.

Resigning as a reviewer to get a very stale review off my list of blocking tasks in phabricator. Please readd when desired.

hfinkel updated this revision to Diff 63349.Jul 8 2016, 4:04 PM

Rebased (and removed an unintentional whitespace change).

majnemer accepted this revision.Jul 10 2016, 1:03 AM
majnemer added a reviewer: majnemer.
majnemer added a subscriber: majnemer.

LGTM

lib/Analysis/ScalarEvolution.cpp
5233 ↗(On Diff #63349)

const auto *II.

This revision is now accepted and ready to land.Jul 10 2016, 1:03 AM
This revision was automatically updated to reflect the committed changes.