<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jul 10, 2016 at 5:26 PM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Hi Sean,<br>
<br>
Can you please explain this? I see that it got rid of a const_cast, but I don't understand why this is the right solution.<br></blockquote><div><br></div><div>I had the same question in the post-commit thread for r268452.</div><div><br></div><div>The key quote from Justin is:</div><div><br></div><div>"""<br><div>These analyses are function analyses, and a loop pass isn't</div><div>allowed to cause a function analysis to run, much like a function pass</div><div>isn't allowed to cause a module analysis to be run. They have to stick</div><div>to their own level. This enforces correct layering and acts as a</div><div>safeguard against accidentally doing extra work.</div></div><div>"""</div><div><br></div><div>Essentially, on order to make this layering desire be present in the code, the outer managers obtained through the proxies (e.g. the FunctionAnalysisManager obtained through FunctionAnalysisManagerLoopProxy by a loop pass) are returned as const.</div><div><br></div><div>I don't necessarily agree with this, but it is the current state of things. The point about redundant work is not entirely convincing since there is a layer of caching. I can sort of sympathize with the layering argument, but overall my impression is that this is mostly going to be an inconvenience going forward.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">
<br>
Thanks again,<br>
Hal<br>
<div class=""><div class="h5"><br>
----- Original Message -----<br>
> From: "Sean Silva via llvm-commits" <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>><br>
> To: <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> Sent: Wednesday, July 6, 2016 8:01:54 PM<br>
> Subject: [llvm] r274712 - [PM] Avoid getResult on a higher level in LoopAccessAnalysis<br>
><br>
> Author: silvas<br>
> Date: Wed Jul  6 20:01:53 2016<br>
> New Revision: 274712<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=274712&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=274712&view=rev</a><br>
> Log:<br>
> [PM] Avoid getResult on a higher level in LoopAccessAnalysis<br>
><br>
> Note that require<domtree> and require<loops> aren't needed because<br>
> they<br>
> come in implicitly via the loop pass manager.<br>
><br>
> Modified:<br>
>     llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-carried.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-independent.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/independent-interleaved.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/memcheck-for-loop-invariant.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/non-wrapping-pointer.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/nullptr.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/number-of-memchecks.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/pointer-with-unknown-bounds.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/stride-access-dependence.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll<br>
>     llvm/trunk/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll<br>
><br>
> Modified: llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp (original)<br>
> +++ llvm/trunk/lib/Analysis/LoopAccessAnalysis.cpp Wed Jul  6<br>
> 20:01:53 2016<br>
> @@ -2027,15 +2027,23 @@ INITIALIZE_PASS_END(LoopAccessAnalysis,<br>
>  char LoopAccessInfoAnalysis::PassID;<br>
><br>
>  LoopAccessInfo LoopAccessInfoAnalysis::run(Loop &L,<br>
>  AnalysisManager<Loop> &AM) {<br>
> -  // FIXME: ugly const cast<br>
> -  AnalysisManager<Function> &FAM =<br>
> const_cast<FunctionAnalysisManager &>(<br>
> -<br>
>      AM.getResult<FunctionAnalysisManagerLoopProxy>(L).getManager());<br>
> +  const AnalysisManager<Function> &FAM =<br>
> +<br>
>      AM.getResult<FunctionAnalysisManagerLoopProxy>(L).getManager();<br>
>    Function &F = *L.getHeader()->getParent();<br>
> -  auto *SE = &FAM.getResult<ScalarEvolutionAnalysis>(F);<br>
> +  auto *SE = FAM.getCachedResult<ScalarEvolutionAnalysis>(F);<br>
>    auto *TLI = FAM.getCachedResult<TargetLibraryAnalysis>(F);<br>
> -  auto *AA = &FAM.getResult<AAManager>(F);<br>
> -  auto *DT = &FAM.getResult<DominatorTreeAnalysis>(F);<br>
> -  auto *LI = &FAM.getResult<LoopAnalysis>(F);<br>
> +  auto *AA = FAM.getCachedResult<AAManager>(F);<br>
> +  auto *DT = FAM.getCachedResult<DominatorTreeAnalysis>(F);<br>
> +  auto *LI = FAM.getCachedResult<LoopAnalysis>(F);<br>
> +  if (!SE)<br>
> +    report_fatal_error(<br>
> +        "ScalarEvolution must have been cached at a higher level");<br>
> +  if (!AA)<br>
> +    report_fatal_error("AliasAnalysis must have been cached at a<br>
> higher level");<br>
> +  if (!DT)<br>
> +    report_fatal_error("DominatorTree must have been cached at a<br>
> higher level");<br>
> +  if (!LI)<br>
> +    report_fatal_error("LoopInfo must have been cached at a higher<br>
> level");<br>
>    const DataLayout &DL = F.getParent()->getDataLayout();<br>
>    return LoopAccessInfo(&L, SE, DL, TLI, AA, DT, LI);<br>
>  }<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/backward-dep-different-types.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output < %s<br>
>  2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output < %s  2>&1 | FileCheck %s<br>
><br>
>  ; In this loop just because we access A through different types<br>
>  (int, float)<br>
>  ; we still have a dependence cycle:<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-carried.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-carried.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-carried.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-carried.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-carried.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ;   for (unsigned i = 0; i < 100; i++) {<br>
>  ;     A[i+8] = B[i] + 2;<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-independent.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-independent.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-independent.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-independent.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/forward-loop-independent.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Check that loop-indepedent forward dependences are discovered<br>
>  properly.<br>
>  ;<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/independent-interleaved.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/independent-interleaved.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/independent-interleaved.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/independent-interleaved.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/independent-interleaved.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt < %s -store-to-load-forwarding-conflict-detection=false<br>
>  -loop-accesses -analyze | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)'<br>
> -store-to-load-forwarding-conflict-detection=false  -disable-output<br>
>  < %s 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -store-to-load-forwarding-conflict-detection=false  -disable-output<br>
>  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; This test checks that we prove the strided accesses to be<br>
>  independent before<br>
>  ; concluding that there is a forward dependence.<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/memcheck-for-loop-invariant.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/memcheck-for-loop-invariant.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/memcheck-for-loop-invariant.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/memcheck-for-loop-invariant.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/memcheck-for-loop-invariant.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Handle memchecks involving loop-invariant addresses:<br>
>  ;<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/multiple-strides-rt-memory-checks.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze -S < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; This is the test case from PR26314.<br>
>  ; When we were retrying dependence checking with memchecks only,<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/non-wrapping-pointer.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/non-wrapping-pointer.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/non-wrapping-pointer.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/non-wrapping-pointer.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/non-wrapping-pointer.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -basicaa -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='require<aa>,loop(print-access-info)'<br>
> -aa-pipeline='basic-aa' -disable-output < %s  2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<aa>,require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -aa-pipeline='basic-aa' -disable-output < %s  2>&1 | FileCheck %s<br>
><br>
>  ; For this loop:<br>
>  ;   for (int i = 0; i < n; i++)<br>
><br>
> Modified: llvm/trunk/test/Analysis/LoopAccessAnalysis/nullptr.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/nullptr.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/nullptr.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Analysis/LoopAccessAnalysis/nullptr.ll (original)<br>
> +++ llvm/trunk/test/Analysis/LoopAccessAnalysis/nullptr.ll Wed Jul  6<br>
> 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze %s  | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Test that the loop accesses are proven safe in this case.<br>
>  ; The analyzer uses to be confused by the "diamond" because<br>
>  GetUnderlyingObjects<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/number-of-memchecks.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/number-of-memchecks.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/number-of-memchecks.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/number-of-memchecks.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/number-of-memchecks.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"<br>
>  target triple = "aarch64--linux-gnueabi"<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/pointer-with-unknown-bounds.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/pointer-with-unknown-bounds.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/pointer-with-unknown-bounds.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/pointer-with-unknown-bounds.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/pointer-with-unknown-bounds.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"<br>
><br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/resort-to-memchecks-only.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; We give up analyzing the dependences in this loop due to<br>
>  non-constant<br>
>  ; distance between A[i+offset] and A[i] and add memchecks to prove<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/reverse-memcheck-bounds.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; The runtime memory check code and the access grouping<br>
>  ; algorithm both assume that the start and end values<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll<br>
> (original)<br>
> +++ llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-no-checks.ll Wed<br>
> Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -basicaa -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='require<aa>,loop(print-access-info)'<br>
> -aa-pipeline='basic-aa' -disable-output < %s  2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<aa>,require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -aa-pipeline='basic-aa' -disable-output < %s  2>&1 | FileCheck %s<br>
><br>
>  ; If the arrays don't alias this loop is safe with no memchecks:<br>
>  ;   for (i = 0; i < n; i++)<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/safe-with-dep-distance.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Analyze this loop:<br>
>  ;   for (i = 0; i < n; i++)<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check2.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt < %s -loop-accesses -analyze  | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Test to confirm LAA will not find store to invariant address.<br>
>  ; Inner loop has no store to invariant address.<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/store-to-invariant-check3.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt < %s -loop-accesses -analyze | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Test to confirm LAA will find store to invariant address.<br>
>  ; Inner loop has a store to invariant address.<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/stride-access-dependence.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/stride-access-dependence.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/stride-access-dependence.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/stride-access-dependence.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/stride-access-dependence.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"<br>
><br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-1.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -basicaa -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; In:<br>
>  ;<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/underlying-objects-2.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -basicaa -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; This loop:<br>
>  ;<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/unsafe-and-rt-checks.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -loop-accesses -analyze < %s | FileCheck %s<br>
> -; RUN: opt -passes='loop(print-access-info)' -disable-output  < %s<br>
> 2>&1 | FileCheck %s<br>
> +; RUN: opt<br>
> -passes='require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -disable-output  < %s 2>&1 | FileCheck %s<br>
><br>
>  ; Analyze this loop:<br>
>  ;   for (i = 0; i < n; i++)<br>
><br>
> Modified:<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll<br>
> URL:<br>
> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll?rev=274712&r1=274711&r2=274712&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll?rev=274712&r1=274711&r2=274712&view=diff</a><br>
> ==============================================================================<br>
> ---<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll<br>
> (original)<br>
> +++<br>
> llvm/trunk/test/Analysis/LoopAccessAnalysis/wrapping-pointer-versioning.ll<br>
> Wed Jul  6 20:01:53 2016<br>
> @@ -1,5 +1,5 @@<br>
>  ; RUN: opt -basicaa -loop-accesses -analyze < %s | FileCheck %s<br>
>  -check-prefix=LAA<br>
> -; RUN: opt -passes='require<aa>,loop(print-access-info)'<br>
> -aa-pipeline='basic-aa' -disable-output < %s  2>&1 | FileCheck %s<br>
> --check-prefix=LAA<br>
> +; RUN: opt<br>
> -passes='require<aa>,require<scalar-evolution>,require<aa>,loop(print-access-info)'<br>
> -aa-pipeline='basic-aa' -disable-output < %s  2>&1 | FileCheck %s<br>
> --check-prefix=LAA<br>
>  ; RUN: opt -loop-versioning -S < %s | FileCheck %s -check-prefix=LV<br>
><br>
>  target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
><br>
<br>
</div></div><span class=""><font color="#888888">--<br>
Hal Finkel<br>
Assistant Computational Scientist<br>
Leadership Computing Facility<br>
Argonne National Laboratory<br>
</font></span></blockquote></div><br></div></div>