[PATCH] D11366: Change BlockScanLimit into a command line option.

Philip Reames listmail at philipreames.com
Tue Jul 21 14:36:47 PDT 2015


LGTM

On 07/20/2015 12:41 PM, Xuetian Weng wrote:
> wengxt created this revision.
> wengxt added reviewers: jingyue, reames.
> wengxt added a subscriber: llvm-commits.
>
> In the benchmark (https://github.com/vetter/shoc) we are researching,
> the duplicated load is not eliminated because MemoryDependenceAnalysis
> hit the BlockScanLimit. This patch change it into a command line option
> instead of a hardcoded value.
>
> Test Plan: test/Analysis/MemoryDependenceAnalysis/memdep-block-scan-limit.ll
>
> http://reviews.llvm.org/D11366
>
> Files:
>    lib/Analysis/MemoryDependenceAnalysis.cpp
>    test/Analysis/MemoryDependenceAnalysis/memdep-block-scan-limit.ll
>
> Index: test/Analysis/MemoryDependenceAnalysis/memdep-block-scan-limit.ll
> ===================================================================
> --- /dev/null
> +++ test/Analysis/MemoryDependenceAnalysis/memdep-block-scan-limit.ll
> @@ -0,0 +1,15 @@
> +; RUN: opt -S -memdep -gvn -basicaa < %s | FileCheck %s
> +; RUN: opt -S -memdep -memdep-block-scan-limit=1 -gvn -basicaa < %s | FileCheck %s --check-prefix=WITH-LIMIT
> +; CHECK-LABEL: @test(
> +; CHECK: load
> +; CHECK-NOT: load
> +; WITH-LIMIT-LABEL: @test(
> +; WITH-LIMIT-CHECK: load
> +; WITH-LIMIT-CHECK: load
> +define i32 @test(i32* %p) {
> + %1 = load i32, i32* %p
> + %2 = add i32 %1, 3
> + %3 = load i32, i32* %p
> + %4 = add i32 %2, %3
> + ret i32 %4
> +}
> Index: lib/Analysis/MemoryDependenceAnalysis.cpp
> ===================================================================
> --- lib/Analysis/MemoryDependenceAnalysis.cpp
> +++ lib/Analysis/MemoryDependenceAnalysis.cpp
> @@ -49,7 +49,11 @@
>             "Number of block queries that were completely cached");
>   
>   // Limit for the number of instructions to scan in a block.
> -static const unsigned int BlockScanLimit = 100;
> +
> +static cl::opt<unsigned> BlockScanLimit(
> +    "memdep-block-scan-limit", cl::Hidden, cl::init(100),
> +    cl::desc("The number of instructions to scan in a block in memory "
> +             "dependency analysis (default = 100)"));
>   
>   // Limit on the number of memdep results to process.
>   static const unsigned int NumResultsLimit = 100;
>
>




More information about the llvm-commits mailing list