forked from OSchip/llvm-project
Recommit "[DSE] Switch to MemorySSA-backed DSE by default."
After investigation by @asbirlea, the issue that caused the
revert appears to be an issue in the original source, rather
than a problem with the compiler.
This patch enables MemorySSA DSE again.
This reverts commit 915310bf14
.
This commit is contained in:
parent
6030a07516
commit
51ff04567b
|
@ -130,12 +130,12 @@
|
|||
; CHECK-O: Running pass: JumpThreadingPass on main
|
||||
; CHECK-O: Running pass: CorrelatedValuePropagationPass on main
|
||||
; CHECK-O: Running pass: DSEPass on main
|
||||
; CHECK-O: Running analysis: PostDominatorTreeAnalysis on main
|
||||
; CHECK-O: Starting {{.*}}Function pass manager run.
|
||||
; CHECK-O: Running pass: LoopSimplifyPass on main
|
||||
; CHECK-O: Running pass: LCSSAPass on main
|
||||
; CHECK-O: Finished {{.*}}Function pass manager run.
|
||||
; CHECK-O: Running pass: ADCEPass on main
|
||||
; CHECK-O: Running analysis: PostDominatorTreeAnalysis on main
|
||||
; CHECK-O: Running pass: SimplifyCFGPass on main
|
||||
; CHECK-O: Running pass: InstCombinePass on main
|
||||
; CHECK-O: Finished {{.*}}Function pass manager run.
|
||||
|
|
|
@ -59,9 +59,6 @@ int f2() {
|
|||
// CHECK-NEXT: [[T1:%.*]] = load i32, i32* [[X]]
|
||||
// CHECK-NEXT: [[T2:%.*]] = add nsw i32 [[T1]], -1
|
||||
|
||||
// This store is dead.
|
||||
// CHECK-NEXT: store i32 [[T2]], i32* [[X]]
|
||||
|
||||
// CHECK: store i32 6, i32* [[X]]
|
||||
x++;
|
||||
// CHECK-NEXT: call void asm sideeffect "", "*m,*m"(i32* nonnull [[X]]
|
||||
|
|
|
@ -106,7 +106,7 @@ EnablePartialStoreMerging("enable-dse-partial-store-merging",
|
|||
cl::desc("Enable partial store merging in DSE"));
|
||||
|
||||
static cl::opt<bool>
|
||||
EnableMemorySSA("enable-dse-memoryssa", cl::init(false), cl::Hidden,
|
||||
EnableMemorySSA("enable-dse-memoryssa", cl::init(true), cl::Hidden,
|
||||
cl::desc("Use the new MemorySSA-backed DSE."));
|
||||
|
||||
static cl::opt<unsigned>
|
||||
|
|
|
@ -85,6 +85,7 @@ define void @test3(i8* %P, i8 %X) {
|
|||
|
||||
define void @test3a(i8* %P, i8 %X) {
|
||||
; CHECK-LABEL: @test3a(
|
||||
; CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 10, i8* [[P:%.*]])
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
%Y = add i8 %X, 1 ;; Dead, because the only use (the store) is dead.
|
||||
|
|
|
@ -522,15 +522,14 @@
|
|||
; GCN-O2-NEXT: Value Propagation
|
||||
; GCN-O2-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; GCN-O2-NEXT: Function Alias Analysis Results
|
||||
; GCN-O2-NEXT: Phi Values Analysis
|
||||
; GCN-O2-NEXT: Memory Dependence Analysis
|
||||
; GCN-O2-NEXT: Dead Store Elimination
|
||||
; GCN-O2-NEXT: Function Alias Analysis Results
|
||||
; GCN-O2-NEXT: Post-Dominator Tree Construction
|
||||
; GCN-O2-NEXT: Memory SSA
|
||||
; GCN-O2-NEXT: Dead Store Elimination
|
||||
; GCN-O2-NEXT: Natural Loop Information
|
||||
; GCN-O2-NEXT: Canonicalize natural loops
|
||||
; GCN-O2-NEXT: LCSSA Verifier
|
||||
; GCN-O2-NEXT: Loop-Closed SSA Form Pass
|
||||
; GCN-O2-NEXT: Function Alias Analysis Results
|
||||
; GCN-O2-NEXT: Scalar Evolution Analysis
|
||||
; GCN-O2-NEXT: Lazy Branch Probability Analysis
|
||||
; GCN-O2-NEXT: Lazy Block Frequency Analysis
|
||||
|
@ -893,15 +892,14 @@
|
|||
; GCN-O3-NEXT: Value Propagation
|
||||
; GCN-O3-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; GCN-O3-NEXT: Function Alias Analysis Results
|
||||
; GCN-O3-NEXT: Phi Values Analysis
|
||||
; GCN-O3-NEXT: Memory Dependence Analysis
|
||||
; GCN-O3-NEXT: Dead Store Elimination
|
||||
; GCN-O3-NEXT: Function Alias Analysis Results
|
||||
; GCN-O3-NEXT: Post-Dominator Tree Construction
|
||||
; GCN-O3-NEXT: Memory SSA
|
||||
; GCN-O3-NEXT: Dead Store Elimination
|
||||
; GCN-O3-NEXT: Natural Loop Information
|
||||
; GCN-O3-NEXT: Canonicalize natural loops
|
||||
; GCN-O3-NEXT: LCSSA Verifier
|
||||
; GCN-O3-NEXT: Loop-Closed SSA Form Pass
|
||||
; GCN-O3-NEXT: Function Alias Analysis Results
|
||||
; GCN-O3-NEXT: Scalar Evolution Analysis
|
||||
; GCN-O3-NEXT: Lazy Branch Probability Analysis
|
||||
; GCN-O3-NEXT: Lazy Block Frequency Analysis
|
||||
|
|
|
@ -215,6 +215,7 @@
|
|||
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
|
||||
; CHECK-O23SZ-NEXT: Running pass: DSEPass
|
||||
; CHECK-O23SZ-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O23SZ-NEXT: Starting llvm::Function pass manager run.
|
||||
; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
|
||||
|
@ -222,7 +223,7 @@
|
|||
; CHECK-O23SZ-NEXT: Running pass: LICMPass
|
||||
; CHECK-EP-SCALAR-LATE-NEXT: Running pass: NoOpFunctionPass
|
||||
; CHECK-O-NEXT: Running pass: ADCEPass
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O1-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
|
||||
|
|
|
@ -86,6 +86,8 @@
|
|||
; CHECK-O2-NEXT: Running analysis: PhiValuesAnalysis
|
||||
; CHECK-O2-NEXT: Running pass: MemCpyOptPass on foo
|
||||
; CHECK-O2-NEXT: Running pass: DSEPass on foo
|
||||
; CHECK-O2-NEXT: Running analysis: MemorySSAAnalysis on foo
|
||||
; CHECK-O2-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O2-NEXT: Running pass: InstCombinePass on foo
|
||||
; CHECK-O2-NEXT: Running pass: SimplifyCFGPass on foo
|
||||
; CHECK-O2-NEXT: Running pass: SCCPPass on foo
|
||||
|
|
|
@ -176,13 +176,14 @@
|
|||
; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass
|
||||
; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis
|
||||
; CHECK-O23SZ-NEXT: Running pass: DSEPass
|
||||
; CHECK-O23SZ-NEXT: Running analysis: PostDominatorTreeAnalysis on foo
|
||||
; CHECK-O23SZ-NEXT: Starting llvm::Function pass manager run
|
||||
; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass
|
||||
; CHECK-O23SZ-NEXT: Running pass: LCSSAPass
|
||||
; CHECK-O23SZ-NEXT: Finished llvm::Function pass manager run
|
||||
; CHECK-O23SZ-NEXT: Running pass: LICMPass on Loop at depth 1 containing: %loop
|
||||
; CHECK-O-NEXT: Running pass: ADCEPass
|
||||
; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O1-NEXT: Running analysis: PostDominatorTreeAnalysis
|
||||
; CHECK-O-NEXT: Running pass: SimplifyCFGPass
|
||||
; CHECK-O-NEXT: Running pass: InstCombinePass
|
||||
; CHECK-O-NEXT: Finished llvm::Function pass manager run.
|
||||
|
|
|
@ -162,15 +162,14 @@
|
|||
; CHECK-NEXT: Value Propagation
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Phi Values Analysis
|
||||
; CHECK-NEXT: Memory Dependence Analysis
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Memory SSA
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
; CHECK-NEXT: LCSSA Verifier
|
||||
; CHECK-NEXT: Loop-Closed SSA Form Pass
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
|
|
@ -167,15 +167,14 @@
|
|||
; CHECK-NEXT: Value Propagation
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Phi Values Analysis
|
||||
; CHECK-NEXT: Memory Dependence Analysis
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Memory SSA
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
; CHECK-NEXT: LCSSA Verifier
|
||||
; CHECK-NEXT: Loop-Closed SSA Form Pass
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
|
|
@ -167,15 +167,14 @@
|
|||
; CHECK-NEXT: Value Propagation
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Phi Values Analysis
|
||||
; CHECK-NEXT: Memory Dependence Analysis
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Memory SSA
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
; CHECK-NEXT: LCSSA Verifier
|
||||
; CHECK-NEXT: Loop-Closed SSA Form Pass
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
|
|
@ -148,15 +148,14 @@
|
|||
; CHECK-NEXT: Value Propagation
|
||||
; CHECK-NEXT: Basic Alias Analysis (stateless AA impl)
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Phi Values Analysis
|
||||
; CHECK-NEXT: Memory Dependence Analysis
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Post-Dominator Tree Construction
|
||||
; CHECK-NEXT: Memory SSA
|
||||
; CHECK-NEXT: Dead Store Elimination
|
||||
; CHECK-NEXT: Natural Loop Information
|
||||
; CHECK-NEXT: Canonicalize natural loops
|
||||
; CHECK-NEXT: LCSSA Verifier
|
||||
; CHECK-NEXT: Loop-Closed SSA Form Pass
|
||||
; CHECK-NEXT: Function Alias Analysis Results
|
||||
; CHECK-NEXT: Scalar Evolution Analysis
|
||||
; CHECK-NEXT: Lazy Branch Probability Analysis
|
||||
; CHECK-NEXT: Lazy Block Frequency Analysis
|
||||
|
|
|
@ -46,8 +46,19 @@ entry:
|
|||
call void @llvm.coro.destroy(i8* %hdl)
|
||||
ret i32 0
|
||||
; CHECK: call void @ctor
|
||||
; CHECK-NEXT: %dec1.spill.addr.i = getelementptr inbounds i8, i8* %call.i, i64 20
|
||||
; CHECK-NEXT: bitcast i8* %dec1.spill.addr.i to i32*
|
||||
; CHECK-NEXT: store i32 4
|
||||
; CHECK-NEXT: call void @print(i32 4)
|
||||
; CHECK-NEXT: %index.addr12.i = getelementptr inbounds i8, i8* %call.i, i64 24
|
||||
; CHECK-NEXT: bitcast i8* %index.addr12.i to i1*
|
||||
; CHECK-NEXT: store i1 false
|
||||
; CHECK-NEXT: store i32 3
|
||||
; CHECK-NEXT: store i32 3
|
||||
; CHECK-NEXT: call void @print(i32 3)
|
||||
; CHECK-NEXT: store i1 false
|
||||
; CHECK-NEXT: store i32 2
|
||||
; CHECK-NEXT: store i32 2
|
||||
; CHECK-NEXT: call void @print(i32 2)
|
||||
; CHECK: ret i32 0
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; First example from Doc/Coroutines.rst (two block loop) converted to retcon
|
||||
; RUN: opt < %s -enable-coroutines -O2 -S | FileCheck %s
|
||||
; RUN: opt < %s -enable-coroutines -aa-pipeline=basic-aa -passes='default<O2>' -S | FileCheck %s
|
||||
; RUN: opt < %s -enable-coroutines -O2 -S | FileCheck --check-prefixes=CHECK %s
|
||||
; RUN: opt < %s -enable-coroutines -aa-pipeline=basic-aa -passes='default<O2>' -S | FileCheck --check-prefixes=CHECK,NPM %s
|
||||
|
||||
define i8* @f(i8* %buffer, i32 %n) {
|
||||
entry:
|
||||
|
@ -75,7 +75,7 @@ entry:
|
|||
; CHECK-NEXT: call void @print(i32 [[INC]])
|
||||
; CHECK-NEXT: [[LOAD:%.*]] = load i32, i32* [[SLOT]], align 4
|
||||
; CHECK-NEXT: [[INC:%.*]] = add i32 [[LOAD]], 1
|
||||
; CHECK-NEXT: store i32 [[INC]], i32* [[SLOT]], align 4
|
||||
; NPM-NEXT: store i32 [[INC]], i32* [[SLOT]], align 4
|
||||
; CHECK-NEXT: call void @print(i32 [[INC]])
|
||||
; CHECK-NEXT: ret i32 0
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
; PR9561
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32"
|
||||
target triple = "i386-apple-darwin9.8"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -dse -S < %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-apple-darwin"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -dse -S < %s | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-f128:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S -enable-dse-partial-overwrite-tracking | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S -enable-dse-partial-overwrite-tracking | FileCheck %s
|
||||
; PR28588
|
||||
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
define void @write4to7(i32* nocapture %p) {
|
||||
; CHECK-LABEL: @write4to7(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
|
||||
%struct.vec2 = type { <4 x i32>, <4 x i32> }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -enable-dse-partial-store-merging=false -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-partial-store-merging=false -S | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
; Ensure that the dead store is deleted in this case. It is wholely
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s --data-layout "e" -dse -enable-dse-memoryssa -enable-dse-partial-store-merging=true -S | FileCheck --check-prefix CHECK --check-prefix CHECK-LE %s
|
||||
; RUN: opt < %s --data-layout "E" -dse -enable-dse-memoryssa -enable-dse-partial-store-merging=true -S | FileCheck --check-prefix CHECK --check-prefix CHECK-BE %s
|
||||
; RUN: opt < %s --data-layout "e" -dse -enable-dse-partial-store-merging=true -S | FileCheck --check-prefix CHECK --check-prefix CHECK-LE %s
|
||||
; RUN: opt < %s --data-layout "E" -dse -enable-dse-partial-store-merging=true -S | FileCheck --check-prefix CHECK --check-prefix CHECK-BE %s
|
||||
|
||||
; This test used to hit an assertion (see PR41949).
|
||||
;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -dse -S | FileCheck %s
|
||||
|
||||
; Both stores should be emitted because we can't tell if the gather aliases.
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa %s -S | FileCheck %s
|
||||
; RUN: opt -dse %s -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:o-p:32:32-Fi8-i64:64-a:0:32-n32-S128"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; XFAIL: *
|
||||
; RUN: opt -basic-aa -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -basic-aa -dse -S < %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-apple-macosx10.7.0"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -basic-aa -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -basic-aa -dse -S < %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
target triple = "x86_64-apple-macosx10.7.0"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
declare noalias i8* @calloc(i64, i64)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -dse -enable-dse-memoryssa -enable-dse-partial-store-merging=false < %s | FileCheck --check-prefixes=CHECK,DEFAULT-LIMIT %s
|
||||
; RUN: opt -S -dse -enable-dse-memoryssa -enable-dse-partial-store-merging=false -dse-memoryssa-partial-store-limit=10 < %s | FileCheck --check-prefixes=CHECK,LARGER-LIMIT %s
|
||||
; RUN: opt -S -dse -enable-dse-partial-store-merging=false < %s | FileCheck --check-prefixes=CHECK,DEFAULT-LIMIT %s
|
||||
; RUN: opt -S -dse -enable-dse-partial-store-merging=false -dse-memoryssa-partial-store-limit=10 < %s | FileCheck --check-prefixes=CHECK,LARGER-LIMIT %s
|
||||
target datalayout = "E-m:e-i64:64-n32:64"
|
||||
target triple = "powerpc64le-unknown-linux"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -basic-aa -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -basic-aa -dse -S < %s | FileCheck %s
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
%t = type { i32 }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S
|
||||
; RUN: opt < %s -basic-aa -dse -S
|
||||
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||
target triple = "i386-apple-darwin10.0"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -basic-aa -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -basic-aa -dse -S < %s | FileCheck %s
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
; REQUIRES: asserts
|
||||
|
||||
; Eliminates store to %R in the entry block.
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -debug-counter=dse-memoryssa-skip=0,dse-memoryssa-count=1 -S | FileCheck --check-prefix=SKIP0-COUNT1 %s
|
||||
; RUN: opt < %s -basic-aa -dse -debug-counter=dse-memoryssa-skip=0,dse-memoryssa-count=1 -S | FileCheck --check-prefix=SKIP0-COUNT1 %s
|
||||
|
||||
; Eliminates store to %P in the entry block.
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -debug-counter=dse-memoryssa-skip=1,dse-memoryssa-count=1 -S | FileCheck --check-prefix=SKIP1-COUNT1 %s
|
||||
; RUN: opt < %s -basic-aa -dse -debug-counter=dse-memoryssa-skip=1,dse-memoryssa-count=1 -S | FileCheck --check-prefix=SKIP1-COUNT1 %s
|
||||
|
||||
; Eliminates both stores in the entry block.
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -debug-counter=dse-memoryssa-skip=0,dse-memoryssa-count=2 -S | FileCheck --check-prefix=SKIP0-COUNT2 %s
|
||||
; RUN: opt < %s -basic-aa -dse -debug-counter=dse-memoryssa-skip=0,dse-memoryssa-count=2 -S | FileCheck --check-prefix=SKIP0-COUNT2 %s
|
||||
|
||||
; Eliminates no stores.
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -debug-counter=dse-memoryssa-skip=2,dse-memoryssa-count=1 -S | FileCheck --check-prefix=SKIP2-COUNT1 %s
|
||||
; RUN: opt < %s -basic-aa -dse -debug-counter=dse-memoryssa-skip=2,dse-memoryssa-count=1 -S | FileCheck --check-prefix=SKIP2-COUNT1 %s
|
||||
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -debugify -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -debugify -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -dse -enable-dse-memoryssa -disable-output < %s
|
||||
; RUN: opt -dse -disable-output < %s
|
||||
; test that we don't crash
|
||||
declare void @bar()
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; XFAIL: *
|
||||
|
||||
; RUN: opt -S -basic-aa -dse -enable-dse-memoryssa < %s | FileCheck %s
|
||||
; RUN: opt -S -basic-aa -dse < %s | FileCheck %s
|
||||
|
||||
; We DSE stack alloc'ed and byval locations, in the presence of fences.
|
||||
; Fence does not make an otherwise thread local store visible.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -S -basic-aa -dse -enable-dse-memoryssa < %s | FileCheck %s
|
||||
; RUN: opt -S -basic-aa -dse < %s | FileCheck %s
|
||||
|
||||
; We conservative choose to prevent dead store elimination
|
||||
; across release or stronger fences. It's not required
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-p:64:64:64"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -S -dse -enable-dse-memoryssa < %s | FileCheck %s
|
||||
; RUN: opt -S -dse < %s | FileCheck %s
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
; This test is not relevant for DSE with MemorySSA. Non-memory instructions
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -S < %s -dse -enable-dse-memoryssa | FileCheck %s
|
||||
; RUN: opt -S < %s -dse | FileCheck %s
|
||||
|
||||
declare void @llvm.sideeffect()
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; Test to make sure llvm.invariant.start calls are not treated as clobbers.
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
declare {}* @llvm.invariant.start.p0i8(i64, i8* nocapture) nounwind readonly
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
; CHECK-LABEL: void @skipBarrier(i8* %ptr)
|
||||
define void @skipBarrier(i8* %ptr) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -inferattrs -basic-aa -dse -enable-dse-memoryssa < %s | FileCheck %s
|
||||
; RUN: opt -S -inferattrs -basic-aa -dse < %s | FileCheck %s
|
||||
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -basic-aa -dse -enable-dse-memoryssa < %s | FileCheck %s
|
||||
; RUN: opt -S -basic-aa -dse < %s | FileCheck %s
|
||||
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: opt -S -dse -enable-dse-memoryssa -dse-memoryssa-scanlimit=2 < %s | FileCheck %s
|
||||
; RUN: opt -S -strip-debug -dse -enable-dse-memoryssa -dse-memoryssa-scanlimit=2 < %s | FileCheck %s
|
||||
; RUN: opt -S -dse -dse-memoryssa-scanlimit=2 < %s | FileCheck %s
|
||||
; RUN: opt -S -strip-debug -dse -dse-memoryssa-scanlimit=2 < %s | FileCheck %s
|
||||
|
||||
; Test case to check that DSE gets the same result even if we have a dbg value
|
||||
; between the memcpy.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
|
||||
; XFAIL: *
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -S | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -S -dse -enable-dse-memoryssa < %s | FileCheck %s
|
||||
; RUN: opt -S -dse < %s | FileCheck %s
|
||||
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i8(i8* nocapture, i8* nocapture, i8, i1) nounwind
|
||||
declare void @llvm.memcpy.inline.p0i8.p0i8.i8(i8* nocapture, i8* nocapture, i8, i1) nounwind
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck --check-prefix=NO-LIMIT %s
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -dse-memoryssa-scanlimit=0 -S | FileCheck --check-prefix=LIMIT-0 %s
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -dse-memoryssa-scanlimit=2 -S | FileCheck --check-prefix=LIMIT-2 %s
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -dse-memoryssa-scanlimit=3 -S | FileCheck --check-prefix=LIMIT-3 %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck --check-prefix=NO-LIMIT %s
|
||||
; RUN: opt < %s -basic-aa -dse -dse-memoryssa-scanlimit=0 -S | FileCheck --check-prefix=LIMIT-0 %s
|
||||
; RUN: opt < %s -basic-aa -dse -dse-memoryssa-scanlimit=2 -S | FileCheck --check-prefix=LIMIT-2 %s
|
||||
; RUN: opt < %s -basic-aa -dse -dse-memoryssa-scanlimit=3 -S | FileCheck --check-prefix=LIMIT-3 %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa=false -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -S | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
; Test that the getelementptr generated when the dse pass determines that
|
||||
; a memset can be shortened has the debugloc carried over from the memset.
|
||||
|
||||
; RUN: opt -S -march=native -dse -enable-dse-memoryssa < %s| FileCheck %s
|
||||
; RUN: opt -S -march=native -dse < %s| FileCheck %s
|
||||
; CHECK: bitcast [5 x i64]* %{{[a-zA-Z_][a-zA-Z0-9_]*}} to i8*, !dbg
|
||||
; CHECK-NEXT: %{{[0-9]+}} = getelementptr inbounds i8, i8* %0, i64 32, !dbg ![[DBG:[0-9]+]]
|
||||
; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* align 16 %1, i8 0, i64 8, i1 false), !dbg ![[DBG:[0-9]+]]
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa -S %s | FileCheck %s
|
||||
; RUN: opt -dse -S %s | FileCheck %s
|
||||
|
||||
declare i8* @_Znwm() local_unnamed_addr #0
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa -enable-dse-partial-store-merging -S < %s | FileCheck %s
|
||||
; RUN: opt -dse -enable-dse-partial-store-merging -S < %s | FileCheck %s
|
||||
target datalayout = "E-m:e-i64:64-i128:128-n32:64-S128"
|
||||
|
||||
define void @byte_by_byte_replacement(i32 *%ptr) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa -enable-dse-partial-store-merging -S < %s | FileCheck %s
|
||||
; RUN: opt -dse -enable-dse-partial-store-merging -S < %s | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-f128:128:128-n8:16:32:64"
|
||||
|
||||
define void @byte_by_byte_replacement(i32 *%ptr) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||
|
||||
declare void @f()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
declare void @unknown_func()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
declare void @unknown_func()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa %s -S | FileCheck --check-prefixes=CHECK,DEFAULT-LIMIT %s
|
||||
; RUN: opt -dse -enable-dse-memoryssa -dse-memoryssa-partial-store-limit=10 %s -S | FileCheck --check-prefixes=CHECK,LARGER-LIMIT %s
|
||||
; RUN: opt -dse %s -S | FileCheck --check-prefixes=CHECK,DEFAULT-LIMIT %s
|
||||
; RUN: opt -dse -dse-memoryssa-partial-store-limit=10 %s -S | FileCheck --check-prefixes=CHECK,LARGER-LIMIT %s
|
||||
|
||||
|
||||
%struct.ham = type { [3 x double], [3 x double]}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
declare void @unknown_func()
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa -S %s | FileCheck %s
|
||||
; RUN: opt -dse -S %s | FileCheck %s
|
||||
|
||||
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -basic-aa -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -basic-aa -dse -S < %s | FileCheck %s
|
||||
|
||||
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i1) nounwind
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -S | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
|
||||
declare noalias i8* @malloc(i64) "malloc-like"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -S | FileCheck %s
|
||||
|
||||
declare void @use(i64*)
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -basic-aa -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -basic-aa -dse -S < %s | FileCheck %s
|
||||
; PR11390
|
||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt -dse -enable-dse-memoryssa -S %s | FileCheck %s
|
||||
; RUN: opt -dse -S %s | FileCheck %s
|
||||
|
||||
@b = local_unnamed_addr global i32 0, align 4
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -enable-knowledge-retention -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-knowledge-retention -S | FileCheck %s
|
||||
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -enable-dse-memoryssa -S | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -S | FileCheck %s
|
||||
; RUN: opt < %s -aa-pipeline=basic-aa -passes=dse -S | FileCheck %s
|
||||
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
|
||||
|
||||
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
||||
; RUN: opt < %s -basic-aa -dse -enable-dse-memoryssa -stats -S 2>&1 | FileCheck %s
|
||||
; RUN: opt < %s -basic-aa -dse -stats -S 2>&1 | FileCheck %s
|
||||
|
||||
; REQUIRES: asserts
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: opt -dse -enable-dse-memoryssa -S < %s | FileCheck %s
|
||||
; RUN: opt -dse -S < %s | FileCheck %s
|
||||
|
||||
; Don't eliminate stores to allocas before tail calls to functions that use
|
||||
; byval. It's correct to mark calls like these as 'tail'. To implement this tail
|
||||
|
|
|
@ -31,7 +31,13 @@ define fastcc void @badly_optimized() nounwind {
|
|||
; CHECK-LABEL: @badly_optimized(
|
||||
; CHECK-NEXT: entry:
|
||||
; CHECK-NEXT: [[Z:%.*]] = alloca [[TMP0:%.*]], align 8
|
||||
; CHECK-NEXT: [[TMP:%.*]] = alloca [[TMP0]], align 8
|
||||
; CHECK-NEXT: [[MEMTMP:%.*]] = alloca [[TMP0]], align 8
|
||||
; CHECK-NEXT: call fastcc void @initialize(%0* noalias sret [[Z]])
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = bitcast %0* [[TMP]] to i8*
|
||||
; CHECK-NEXT: [[MEMTMP2:%.*]] = bitcast %0* [[MEMTMP]] to i8*
|
||||
; CHECK-NEXT: [[Z3:%.*]] = bitcast %0* [[Z]] to i8*
|
||||
; CHECK-NEXT: [[TMP4:%.*]] = bitcast %0* [[TMP]] to i8*
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = call fastcc x86_fp80 @passed_uninitialized(%0* [[Z]])
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
|
|
|
@ -12,9 +12,11 @@ define void @test1(%0* sret %agg.result, x86_fp80 %z.0, x86_fp80 %z.1) nounwind
|
|||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NEXT: entry:
|
||||
; CHECK-NEXT: [[TMP2:%.*]] = alloca [[TMP0:%.*]], align 16
|
||||
; CHECK-NEXT: [[MEMTMP:%.*]] = alloca [[TMP0]], align 16
|
||||
; CHECK-NEXT: [[TMP5:%.*]] = fsub x86_fp80 0xK80000000000000000000, [[Z_1:%.*]]
|
||||
; CHECK-NEXT: call void @ccoshl(%0* sret [[TMP2]], x86_fp80 [[TMP5]], x86_fp80 [[Z_0:%.*]]) [[ATTR0:#.*]]
|
||||
; CHECK-NEXT: [[TMP219:%.*]] = bitcast %0* [[TMP2]] to i8*
|
||||
; CHECK-NEXT: [[MEMTMP20:%.*]] = bitcast %0* [[MEMTMP]] to i8*
|
||||
; CHECK-NEXT: [[AGG_RESULT21:%.*]] = bitcast %0* [[AGG_RESULT:%.*]] to i8*
|
||||
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 16 [[AGG_RESULT21]], i8* align 16 [[TMP219]], i32 32, i1 false)
|
||||
; CHECK-NEXT: ret void
|
||||
|
@ -76,8 +78,11 @@ define void @test2_memcpy(i8* noalias %P, i8* noalias %Q) nounwind {
|
|||
|
||||
define void @test3(%0* noalias sret %agg.result) nounwind {
|
||||
; CHECK-LABEL: @test3(
|
||||
; CHECK-NEXT: [[X_0:%.*]] = alloca [[TMP0:%.*]], align 16
|
||||
; CHECK-NEXT: [[X_01:%.*]] = bitcast %0* [[X_0]] to i8*
|
||||
; CHECK-NEXT: [[AGG_RESULT1:%.*]] = bitcast %0* [[AGG_RESULT:%.*]] to i8*
|
||||
; CHECK-NEXT: call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 16 [[AGG_RESULT1]], i8* align 16 bitcast (%0* @x to i8*), i32 32, i1 false)
|
||||
; CHECK-NEXT: [[AGG_RESULT2:%.*]] = bitcast %0* [[AGG_RESULT]] to i8*
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
%x.0 = alloca %0
|
||||
|
@ -270,7 +275,10 @@ define void @test9_addrspacecast() nounwind ssp uwtable {
|
|||
; CHECK-LABEL: @test9_addrspacecast(
|
||||
; CHECK-NEXT: entry:
|
||||
; CHECK-NEXT: [[B:%.*]] = alloca [[STRUCT_BIG:%.*]], align 4
|
||||
; CHECK-NEXT: [[TMP:%.*]] = alloca [[STRUCT_BIG]], align 4
|
||||
; CHECK-NEXT: call void @f1(%struct.big* sret [[B]])
|
||||
; CHECK-NEXT: [[TMP0:%.*]] = addrspacecast %struct.big* [[B]] to i8 addrspace(1)*
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast %struct.big* [[TMP]] to i8 addrspace(1)*
|
||||
; CHECK-NEXT: call void @f2(%struct.big* [[B]])
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
|
@ -289,7 +297,10 @@ define void @test9() nounwind ssp uwtable {
|
|||
; CHECK-LABEL: @test9(
|
||||
; CHECK-NEXT: entry:
|
||||
; CHECK-NEXT: [[B:%.*]] = alloca [[STRUCT_BIG:%.*]], align 4
|
||||
; CHECK-NEXT: [[TMP:%.*]] = alloca [[STRUCT_BIG]], align 4
|
||||
; CHECK-NEXT: call void @f1(%struct.big* sret [[B]])
|
||||
; CHECK-NEXT: [[TMP0:%.*]] = bitcast %struct.big* [[B]] to i8*
|
||||
; CHECK-NEXT: [[TMP1:%.*]] = bitcast %struct.big* [[TMP]] to i8*
|
||||
; CHECK-NEXT: call void @f2(%struct.big* [[B]])
|
||||
; CHECK-NEXT: ret void
|
||||
;
|
||||
|
|
Loading…
Reference in New Issue