1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 10:32:48 +02:00

[NewPM] Consistently use 'simplifycfg' rather than 'simplify-cfg'

There was an alias between 'simplifycfg' and 'simplify-cfg' in the
PassRegistry. That was the original reason for this patch, which
effectively removes the alias.

This patch also replaces all occurrances of 'simplify-cfg'
by 'simplifycfg'. Reason for choosing that form for the name is
that it matches the DEBUG_TYPE for the pass, and the legacy PM name
and also how it is spelled out in other passes such as
'loop-simplifycfg', and in other options such as
'simplifycfg-merge-cond-stores'.

I for some reason the name should be changed to 'simplify-cfg' in
the future, then I think such a renaming should be more widely done
and not only impacting the PassRegistry.

Reviewed By: aeubanks

Differential Revision: https://reviews.llvm.org/D105627
This commit is contained in:
Bjorn Pettersson 2021-07-08 14:24:03 +02:00
parent 6cdbedb38b
commit 8be96b95c4
103 changed files with 119 additions and 120 deletions

View File

@ -2211,7 +2211,7 @@ bool CallAnalyzer::visitSwitchInst(SwitchInst &SI) {
// proportional to the size of the tree or the size of jump table range. // proportional to the size of the tree or the size of jump table range.
// //
// NB: We convert large switches which are just used to initialize large phi // NB: We convert large switches which are just used to initialize large phi
// nodes to lookup tables instead in simplify-cfg, so this shouldn't prevent // nodes to lookup tables instead in simplifycfg, so this shouldn't prevent
// inlining those. It will prevent inlining in cases where the optimization // inlining those. It will prevent inlining in cases where the optimization
// does not (yet) fire. // does not (yet) fire.

View File

@ -88,7 +88,7 @@ void llvm::handleExecNameEncodedOptimizerOpts(StringRef ExecName) {
} else if (Opt == "earlycse") { } else if (Opt == "earlycse") {
Args.push_back("-passes=early-cse"); Args.push_back("-passes=early-cse");
} else if (Opt == "simplifycfg") { } else if (Opt == "simplifycfg") {
Args.push_back("-passes=simplify-cfg"); Args.push_back("-passes=simplifycfg");
} else if (Opt == "gvn") { } else if (Opt == "gvn") {
Args.push_back("-passes=gvn"); Args.push_back("-passes=gvn");
} else if (Opt == "sccp") { } else if (Opt == "sccp") {

View File

@ -1154,7 +1154,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level,
// Promote any localized globals to SSA registers. // Promote any localized globals to SSA registers.
// FIXME: Should this instead by a run of SROA? // FIXME: Should this instead by a run of SROA?
// FIXME: We should probably run instcombine and simplify-cfg afterward to // FIXME: We should probably run instcombine and simplifycfg afterward to
// delete control flows that are dead once globals have been folded to // delete control flows that are dead once globals have been folded to
// constants. // constants.
MPM.addPass(createModuleToFunctionPassAdaptor(PromotePass())); MPM.addPass(createModuleToFunctionPassAdaptor(PromotePass()));
@ -1388,7 +1388,7 @@ PassBuilder::buildModuleOptimizationPipeline(OptimizationLevel Level,
} }
// FIXME: We need to run some loop optimizations to re-rotate loops after // FIXME: We need to run some loop optimizations to re-rotate loops after
// simplify-cfg and others undo their rotation. // simplifycfg and others undo their rotation.
// Optimize the loop execution. These passes operate on entire loop nests // Optimize the loop execution. These passes operate on entire loop nests
// rather than on each loop in an inside-out manner, and so they are actually // rather than on each loop in an inside-out manner, and so they are actually

View File

@ -301,7 +301,6 @@ FUNCTION_PASS("scalarize-masked-mem-intrin", ScalarizeMaskedMemIntrinPass())
FUNCTION_PASS("scalarizer", ScalarizerPass()) FUNCTION_PASS("scalarizer", ScalarizerPass())
FUNCTION_PASS("separate-const-offset-from-gep", SeparateConstOffsetFromGEPPass()) FUNCTION_PASS("separate-const-offset-from-gep", SeparateConstOffsetFromGEPPass())
FUNCTION_PASS("sccp", SCCPPass()) FUNCTION_PASS("sccp", SCCPPass())
FUNCTION_PASS("simplifycfg", SimplifyCFGPass())
FUNCTION_PASS("sink", SinkingPass()) FUNCTION_PASS("sink", SinkingPass())
FUNCTION_PASS("slp-vectorizer", SLPVectorizerPass()) FUNCTION_PASS("slp-vectorizer", SLPVectorizerPass())
FUNCTION_PASS("slsr", StraightLineStrengthReducePass()) FUNCTION_PASS("slsr", StraightLineStrengthReducePass())
@ -352,7 +351,7 @@ FUNCTION_PASS_WITH_PARAMS("msan",
}, },
parseMSanPassOptions, parseMSanPassOptions,
"recover;kernel;track-origins=N") "recover;kernel;track-origins=N")
FUNCTION_PASS_WITH_PARAMS("simplify-cfg", FUNCTION_PASS_WITH_PARAMS("simplifycfg",
"SimplifyCFGPass", "SimplifyCFGPass",
[](SimplifyCFGOptions Opts) { [](SimplifyCFGOptions Opts) {
return SimplifyCFGPass(Opts); return SimplifyCFGPass(Opts);

View File

@ -454,7 +454,7 @@ void PassManagerBuilder::addFunctionSimplificationPasses(
else else
MPM.add(createLoopUnswitchPass(SizeLevel || OptLevel < 3, DivergentTarget)); MPM.add(createLoopUnswitchPass(SizeLevel || OptLevel < 3, DivergentTarget));
// FIXME: We break the loop pass pipeline here in order to do full // FIXME: We break the loop pass pipeline here in order to do full
// simplify-cfg. Eventually loop-simplifycfg should be enhanced to replace the // simplifycfg. Eventually loop-simplifycfg should be enhanced to replace the
// need for this. // need for this.
MPM.add(createCFGSimplificationPass()); MPM.add(createCFGSimplificationPass());
MPM.add(createInstructionCombiningPass()); MPM.add(createInstructionCombiningPass());

View File

@ -420,7 +420,7 @@ static Loop *getTopMostExitingLoop(BasicBlock *ExitBB, LoopInfo &LI) {
/// hoists the branch above that split. Preserves loop simplified form /// hoists the branch above that split. Preserves loop simplified form
/// (splitting the exit block as necessary). It simplifies the branch within /// (splitting the exit block as necessary). It simplifies the branch within
/// the loop to an unconditional branch but doesn't remove it entirely. Further /// the loop to an unconditional branch but doesn't remove it entirely. Further
/// cleanup can be done with some simplify-cfg like pass. /// cleanup can be done with some simplifycfg like pass.
/// ///
/// If `SE` is not null, it will be updated based on the potential loop SCEVs /// If `SE` is not null, it will be updated based on the potential loop SCEVs
/// invalidated by this. /// invalidated by this.
@ -648,7 +648,7 @@ static bool unswitchTrivialBranch(Loop &L, BranchInst &BI, DominatorTree &DT,
/// considered for unswitching so this is a stable transform and the same /// considered for unswitching so this is a stable transform and the same
/// switch will not be revisited. If after unswitching there is only a single /// switch will not be revisited. If after unswitching there is only a single
/// in-loop successor, the switch is further simplified to an unconditional /// in-loop successor, the switch is further simplified to an unconditional
/// branch. Still more cleanup can be done with some simplify-cfg like pass. /// branch. Still more cleanup can be done with some simplifycfg like pass.
/// ///
/// If `SE` is not null, it will be updated based on the potential loop SCEVs /// If `SE` is not null, it will be updated based on the potential loop SCEVs
/// invalidated by this. /// invalidated by this.
@ -983,7 +983,7 @@ static bool unswitchAllTrivialConditions(Loop &L, DominatorTree &DT,
if (auto *SI = dyn_cast<SwitchInst>(CurrentTerm)) { if (auto *SI = dyn_cast<SwitchInst>(CurrentTerm)) {
// Don't bother trying to unswitch past a switch with a constant // Don't bother trying to unswitch past a switch with a constant
// condition. This should be removed prior to running this pass by // condition. This should be removed prior to running this pass by
// simplify-cfg. // simplifycfg.
if (isa<Constant>(SI->getCondition())) if (isa<Constant>(SI->getCondition()))
return Changed; return Changed;
@ -1012,7 +1012,7 @@ static bool unswitchAllTrivialConditions(Loop &L, DominatorTree &DT,
return Changed; return Changed;
// Don't bother trying to unswitch past an unconditional branch or a branch // Don't bother trying to unswitch past an unconditional branch or a branch
// with a constant value. These should be removed by simplify-cfg prior to // with a constant value. These should be removed by simplifycfg prior to
// running this pass. // running this pass.
if (!BI->isConditional() || isa<Constant>(BI->getCondition())) if (!BI->isConditional() || isa<Constant>(BI->getCondition()))
return Changed; return Changed;

View File

@ -1,7 +1,7 @@
; RUN: opt -loop-unswitch -loop-reduce -loop-simplifycfg -verify-memoryssa -S %s | FileCheck %s ; RUN: opt -loop-unswitch -loop-reduce -loop-simplifycfg -verify-memoryssa -S %s | FileCheck %s
; TODO: also run with NPM, but currently LSR does not preserve LCSSA, causing a verification failure on the test. ; TODO: also run with NPM, but currently LSR does not preserve LCSSA, causing a verification failure on the test.
; opt -passes='loop-mssa(unswitch<nontrivial>,loop-reduce,simplify-cfg)' -verify-memoryssa -S %s | FileCheck %s ; opt -passes='loop-mssa(unswitch<nontrivial>,loop-reduce,simplifycfg)' -verify-memoryssa -S %s | FileCheck %s
; Test case for PR47557. ; Test case for PR47557.

View File

@ -1,7 +1,7 @@
; Test that patterns of transformations which disconnect a region of the call ; Test that patterns of transformations which disconnect a region of the call
; graph mid-traversal and then invalidate it function correctly. ; graph mid-traversal and then invalidate it function correctly.
; ;
; RUN: opt -S -passes='cgscc(inline,function(simplify-cfg))' < %s | FileCheck %s ; RUN: opt -S -passes='cgscc(inline,function(simplifycfg))' < %s | FileCheck %s
define internal void @test_scc_internal(i1 %flag) { define internal void @test_scc_internal(i1 %flag) {
; CHECK-NOT: @test_scc_internal ; CHECK-NOT: @test_scc_internal

View File

@ -1,11 +1,11 @@
; RUN: opt -aa-pipeline=basic-aa -passes='cgscc(function-attrs,function(simplify-cfg))' -S < %s | FileCheck %s ; RUN: opt -aa-pipeline=basic-aa -passes='cgscc(function-attrs,function(simplifycfg))' -S < %s | FileCheck %s
declare void @readnone() nofree nosync readnone declare void @readnone() nofree nosync readnone
declare void @unknown() declare void @unknown()
declare void @reference_function_pointer(void()*) nofree nosync readnone declare void @reference_function_pointer(void()*) nofree nosync readnone
; The @test1_* set of functions checks that when we mutate functions with ; The @test1_* set of functions checks that when we mutate functions with
; simplify-cfg to delete call edges and this ends up splitting both the SCCs ; simplifycfg to delete call edges and this ends up splitting both the SCCs
; and the RefSCCs that those functions are in, we re-run the CGSCC passes to ; and the RefSCCs that those functions are in, we re-run the CGSCC passes to
; observe the refined call graph structure. ; observe the refined call graph structure.

View File

@ -54,7 +54,7 @@
; CHECK-O2-NOT: Manager ; CHECK-O2-NOT: Manager
; CHECK-O2: Loop Pass Manager ; CHECK-O2: Loop Pass Manager
; CHECK-O2-NOT: Manager ; CHECK-O2-NOT: Manager
; FIXME: We shouldn't be pulling out to simplify-cfg and instcombine and ; FIXME: We shouldn't be pulling out to simplifycfg and instcombine and
; causing new loop pass managers. ; causing new loop pass managers.
; CHECK-O2: Simplify the CFG ; CHECK-O2: Simplify the CFG
; CHECK-O2-NOT: Manager ; CHECK-O2-NOT: Manager

View File

@ -7,13 +7,13 @@
; RUN: -simplifycfg -print-after=simplifycfg -print-module-scope \ ; RUN: -simplifycfg -print-after=simplifycfg -print-module-scope \
; RUN: | FileCheck %s -check-prefix=CFG ; RUN: | FileCheck %s -check-prefix=CFG
; RUN: opt < %s 2>&1 -disable-output \ ; RUN: opt < %s 2>&1 -disable-output \
; RUN: -passes=simplify-cfg -print-after-all -print-module-scope \ ; RUN: -passes=simplifycfg -print-after-all -print-module-scope \
; RUN: | FileCheck %s -check-prefix=CFG ; RUN: | FileCheck %s -check-prefix=CFG
; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \ ; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
; RUN: -simplifycfg -print-after=simplifycfg -filter-print-funcs=foo -print-module-scope \ ; RUN: -simplifycfg -print-after=simplifycfg -filter-print-funcs=foo -print-module-scope \
; RUN: | FileCheck %s -check-prefix=FOO ; RUN: | FileCheck %s -check-prefix=FOO
; RUN: opt < %s 2>&1 -disable-output \ ; RUN: opt < %s 2>&1 -disable-output \
; RUN: -passes=simplify-cfg -print-after-all -filter-print-funcs=foo -print-module-scope \ ; RUN: -passes=simplifycfg -print-after-all -filter-print-funcs=foo -print-module-scope \
; RUN: | FileCheck %s -check-prefix=FOO ; RUN: | FileCheck %s -check-prefix=FOO
; CFG: IR Dump After {{Simplify the CFG|SimplifyCFGPass}} {{.*}}foo ; CFG: IR Dump After {{Simplify the CFG|SimplifyCFGPass}} {{.*}}foo

View File

@ -1,6 +1,6 @@
; Need to move users of allocas that were moved into the coroutine frame after ; Need to move users of allocas that were moved into the coroutine frame after
; coro.begin. ; coro.begin.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define nonnull i8* @f(i32 %n) "coroutine.presplit"="1" { define nonnull i8* @f(i32 %n) "coroutine.presplit"="1" {
; CHECK-LABEL: @f( ; CHECK-LABEL: @f(

View File

@ -1,6 +1,6 @@
; Check that we can handle the case when both alloc function and ; Check that we can handle the case when both alloc function and
; the user body consume the same argument. ; the user body consume the same argument.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
; using copy of this (as it would happen under -O0) ; using copy of this (as it would happen under -O0)
define i8* @f_copy(i64 %this_arg) "coroutine.presplit"="1" { define i8* @f_copy(i64 %this_arg) "coroutine.presplit"="1" {

View File

@ -1,6 +1,6 @@
; Check that we can handle the case when both alloc function and ; Check that we can handle the case when both alloc function and
; the user body consume the same argument. ; the user body consume the same argument.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
; using this directly (as it would happen under -O2) ; using this directly (as it would happen under -O2)
define i8* @f_direct(i64 %this) "coroutine.presplit"="1" { define i8* @f_direct(i64 %this) "coroutine.presplit"="1" {

View File

@ -1,6 +1,6 @@
; Tests that CoroSplit can succesfully determine allocas should live on the frame ; Tests that CoroSplit can succesfully determine allocas should live on the frame
; if their aliases are used across suspension points through PHINode. ; if their aliases are used across suspension points through PHINode.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i1 %n) "coroutine.presplit"="1" { define i8* @f(i1 %n) "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that if an alloca is escaped through storing the address, ; Tests that if an alloca is escaped through storing the address,
; the alloac will be put on the frame. ; the alloac will be put on the frame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f() "coroutine.presplit"="1" { define i8* @f() "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,5 +1,5 @@
; Tests that allocas escaped through function calls will live on the frame. ; Tests that allocas escaped through function calls will live on the frame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f() "coroutine.presplit"="1" { define i8* @f() "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that CoroSplit can succesfully determine allocas should live on the frame ; Tests that CoroSplit can succesfully determine allocas should live on the frame
; if their aliases are used across suspension points through PHINode. ; if their aliases are used across suspension points through PHINode.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i1 %n) "coroutine.presplit"="1" { define i8* @f(i1 %n) "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that allocas after coro.begin are properly that do not need to ; Tests that allocas after coro.begin are properly that do not need to
; live on the frame are properly moved to the .resume function. ; live on the frame are properly moved to the .resume function.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f() "coroutine.presplit"="1" { define i8* @f() "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Test that in some simple cases allocas will not live on the frame even ; Test that in some simple cases allocas will not live on the frame even
; though their pointers are stored. ; though their pointers are stored.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%handle = type { i8* } %handle = type { i8* }

View File

@ -1,6 +1,6 @@
; Tests that CoroSplit can succesfully determine allocas should live on the frame ; Tests that CoroSplit can succesfully determine allocas should live on the frame
; if their aliases are used across suspension points through PHINode. ; if their aliases are used across suspension points through PHINode.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i1 %n) "coroutine.presplit"="1" { define i8* @f(i1 %n) "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%"struct.std::coroutine_handle" = type { i8* } %"struct.std::coroutine_handle" = type { i8* }
%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } %"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" }

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%promise_type = type { i8 } %promise_type = type { i8 }
%struct.A = type <{ i64, i64, i32, [4 x i8] }> %struct.A = type <{ i64, i64, i32, [4 x i8] }>

View File

@ -1,6 +1,6 @@
; Tests the PHI nodes in cleanuppads for catchswitch instructions are correctly ; Tests the PHI nodes in cleanuppads for catchswitch instructions are correctly
; split up. ; split up.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
declare i32 @__CxxFrameHandler3(...) declare i32 @__CxxFrameHandler3(...)
define i8* @f2(i1 %val) "coroutine.presplit"="1" personality i32 (...)* @__CxxFrameHandler3 { define i8* @f2(i1 %val) "coroutine.presplit"="1" personality i32 (...)* @__CxxFrameHandler3 {

View File

@ -1,5 +1,5 @@
; Verifies that we can insert the spill for a PHI preceding the catchswitch ; Verifies that we can insert the spill for a PHI preceding the catchswitch
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
target triple = "i686-pc-windows-msvc" target triple = "i686-pc-windows-msvc"

View File

@ -1,5 +1,5 @@
; Tests that debug information is sane after coro-split ; Tests that debug information is sane after coro-split
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
source_filename = "simple-repro.c" source_filename = "simple-repro.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"

View File

@ -1,5 +1,5 @@
; Check that we can handle edge splits leading into a landingpad ; Check that we can handle edge splits leading into a landingpad
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu" target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,5 +1,5 @@
; Check that we can handle edge splits leading into a landingpad ; Check that we can handle edge splits leading into a landingpad
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu" target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,5 +1,5 @@
; Check that we can handle edge splits leading into a landingpad ; Check that we can handle edge splits leading into a landingpad
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu" target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,5 +1,5 @@
; Check that we can handle spills of array allocas ; Check that we can handle spills of array allocas
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
declare void @consume.double.ptr(double*) declare void @consume.double.ptr(double*)
declare void @consume.i32.ptr(i32*) declare void @consume.i32.ptr(i32*)

View File

@ -1,5 +1,5 @@
; Check that we can handle spills of array allocas ; Check that we can handle spills of array allocas
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s
%struct.big_structure = type { [500 x i8] } %struct.big_structure = type { [500 x i8] }
declare void @consume(%struct.big_structure*) declare void @consume(%struct.big_structure*)

View File

@ -1,6 +1,6 @@
; Tests that variables in a Corotuine whose lifetime range is not overlapping each other ; Tests that variables in a Corotuine whose lifetime range is not overlapping each other
; re-use the same slot in Coroutine frame. ; re-use the same slot in Coroutine frame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s
%"struct.task::promise_type" = type { i8 } %"struct.task::promise_type" = type { i8 }
%struct.awaitable = type { i8 } %struct.awaitable = type { i8 }
%struct.big_structure = type { [500 x i8] } %struct.big_structure = type { [500 x i8] }

View File

@ -1,6 +1,6 @@
; Tests that variables of different type in a Corotuine whose lifetime range is not overlapping each other ; Tests that variables of different type in a Corotuine whose lifetime range is not overlapping each other
; re-use the same slot in Coroutine frame. ; re-use the same slot in Coroutine frame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s
%"struct.task::promise_type" = type { i8 } %"struct.task::promise_type" = type { i8 }
%struct.awaitable = type { i8 } %struct.awaitable = type { i8 }
%struct.big_structure = type { [500 x i8] } %struct.big_structure = type { [500 x i8] }

View File

@ -1,5 +1,5 @@
; Check that we should not reuse alloca sotrage in O0. ; Check that we should not reuse alloca sotrage in O0.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%struct.big_structure = type { [500 x i8] } %struct.big_structure = type { [500 x i8] }
declare void @consume(%struct.big_structure*) declare void @consume(%struct.big_structure*)

View File

@ -1,6 +1,6 @@
; Tests that variables of different type with incompatible alignment in a Corotuine whose lifetime ; Tests that variables of different type with incompatible alignment in a Corotuine whose lifetime
; range is not overlapping each other should not re-use the same slot in Coroutine frame. ; range is not overlapping each other should not re-use the same slot in Coroutine frame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s
%"struct.task::promise_type" = type { i8 } %"struct.task::promise_type" = type { i8 }
%struct.awaitable = type { i8 } %struct.awaitable = type { i8 }
%struct.big_structure = type { [500 x i8] } %struct.big_structure = type { [500 x i8] }

View File

@ -1,6 +1,6 @@
; Tests that variables of different type with incompatible alignment in a Corotuine whose ; Tests that variables of different type with incompatible alignment in a Corotuine whose
; lifetime range is not overlapping each other re-use the same slot in CorotuineFrame. ; lifetime range is not overlapping each other re-use the same slot in CorotuineFrame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -reuse-storage-in-coroutine-frame -S | FileCheck %s
%"struct.task::promise_type" = type { i8 } %"struct.task::promise_type" = type { i8 }
%struct.awaitable = type { i8 } %struct.awaitable = type { i8 }
%struct.big_structure = type { [500 x i8] } %struct.big_structure = type { [500 x i8] }

View File

@ -1,5 +1,5 @@
; Check that coro-split doesn't choke on intrinsics in unreachable blocks ; Check that coro-split doesn't choke on intrinsics in unreachable blocks
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S
define i8* @f(i1 %arg) "coroutine.presplit"="1" personality i32 0 { define i8* @f(i1 %arg) "coroutine.presplit"="1" personality i32 0 {
entry: entry:

View File

@ -1,5 +1,5 @@
; Check that we can handle spills of the result of the invoke instruction ; Check that we can handle spills of the result of the invoke instruction
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i64 %this) "coroutine.presplit"="1" personality i32 0 { define i8* @f(i64 %this) "coroutine.presplit"="1" personality i32 0 {
entry: entry:

View File

@ -2,7 +2,7 @@
; elided and any tail calls referencing the coroutine frame has the tail ; elided and any tail calls referencing the coroutine frame has the tail
; call attribute removed. ; call attribute removed.
; RUN: opt < %s -S \ ; RUN: opt < %s -S \
; RUN: -passes='cgscc(inline,function(coro-elide,instsimplify,simplify-cfg))' \ ; RUN: -passes='cgscc(inline,function(coro-elide,instsimplify,simplifycfg))' \
; RUN: -aa-pipeline='basic-aa' | FileCheck %s ; RUN: -aa-pipeline='basic-aa' | FileCheck %s
declare void @print(i32) nounwind declare void @print(i32) nounwind

View File

@ -1,5 +1,5 @@
; Verifies that we materialize instruction across suspend points ; Verifies that we materialize instruction across suspend points
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i32 %n) "coroutine.presplit"="1" { define i8* @f(i32 %n) "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Check that we will insert the correct padding if natural alignment of the ; Check that we will insert the correct padding if natural alignment of the
; spilled data does not match the alignment specified in alloca instruction. ; spilled data does not match the alignment specified in alloca instruction.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%PackedStruct = type <{ i64 }> %PackedStruct = type <{ i64 }>

View File

@ -1,6 +1,6 @@
; Check that we create copy the data from the alloca into the coroutine ; Check that we create copy the data from the alloca into the coroutine
; frame slot if it was written to. ; frame slot if it was written to.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f() "coroutine.presplit"="1" { define i8* @f() "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
target datalayout = "p:64:64:64" target datalayout = "p:64:64:64"

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,coro-cleanup' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,coro-cleanup' -S | FileCheck %s
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.12.0" target triple = "x86_64-apple-macosx10.12.0"

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg,coro-cleanup' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg,coro-cleanup' -S | FileCheck %s
define i8* @f(i8* %buffer, i32 %n) "coroutine.presplit"="1" { define i8* @f(i8* %buffer, i32 %n) "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -passes='function(coro-early),cgscc(coro-split),function(simplify-cfg,early-cse)' -S | FileCheck %s ; RUN: opt < %s -passes='function(coro-early),cgscc(coro-split),function(simplifycfg,early-cse)' -S | FileCheck %s
target datalayout = "E-p:64:64" target datalayout = "E-p:64:64"
%swift.type = type { i64 } %swift.type = type { i64 }

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; Verifies that we insert spills of PHI instruction _after) all PHI Nodes ; Verifies that we insert spills of PHI instruction _after) all PHI Nodes
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
; Verifies that the both phis are stored correctly in the coroutine frame ; Verifies that the both phis are stored correctly in the coroutine frame
; CHECK: %f.Frame = type { void (%f.Frame*)*, void (%f.Frame*)*, i32, i32, i1 } ; CHECK: %f.Frame = type { void (%f.Frame*)*, void (%f.Frame*)*, i32, i32, i1 }

View File

@ -1,5 +1,5 @@
; Check that we can spills coro.begin from an inlined inner coroutine. ; Check that we can spills coro.begin from an inlined inner coroutine.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%g.Frame = type { void (%g.Frame*)*, void (%g.Frame*)*, i32, i1, i32 } %g.Frame = type { void (%g.Frame*)*, void (%g.Frame*)*, i32, i1, i32 }

View File

@ -1,5 +1,5 @@
; Verifies that phi and invoke definitions before CoroBegin are spilled properly. ; Verifies that phi and invoke definitions before CoroBegin are spilled properly.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
define i8* @f(i1 %n) "coroutine.presplit"="1" personality i32 0 { define i8* @f(i1 %n) "coroutine.presplit"="1" personality i32 0 {
entry: entry:

View File

@ -1,5 +1,5 @@
; Check that promise object is reloaded from the correct index of the coro frame. ; Check that promise object is reloaded from the correct index of the coro frame.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%"class.task::promise_type" = type { [64 x i8] } %"class.task::promise_type" = type { [64 x i8] }

View File

@ -1,5 +1,5 @@
; Tests that coro-split pass splits the coroutine into f, f.resume and f.destroy ; Tests that coro-split pass splits the coroutine into f, f.resume and f.destroy
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f() "coroutine.presplit"="1" { define i8* @f() "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,7 +1,7 @@
; Tests that coro-split can handle the case when a code after coro.suspend uses ; Tests that coro-split can handle the case when a code after coro.suspend uses
; a value produces between coro.save and coro.suspend (%Result.i19) ; a value produces between coro.save and coro.suspend (%Result.i19)
; and checks whether stray coro.saves are properly removed ; and checks whether stray coro.saves are properly removed
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
%"struct.std::coroutine_handle" = type { i8* } %"struct.std::coroutine_handle" = type { i8* }
%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } %"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" }

View File

@ -1,5 +1,5 @@
; Tests that coro-split passes initialized values to coroutine frame allocator. ; Tests that coro-split passes initialized values to coroutine frame allocator.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i32 %argument) "coroutine.presplit"="1" { define i8* @f(i32 %argument) "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Make sure that coro-split correctly deals with debug information. ; Make sure that coro-split correctly deals with debug information.
; The test here is simply that it does not result in bad IR that will crash opt. ; The test here is simply that it does not result in bad IR that will crash opt.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -disable-output ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -disable-output
source_filename = "coro.c" source_filename = "coro.c"
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu" target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,6 +1,6 @@
; Tests that coro-split removes cleanup code after coro.end in resume functions ; Tests that coro-split removes cleanup code after coro.end in resume functions
; and retains it in the start function. ; and retains it in the start function.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f(i1 %val) "coroutine.presplit"="1" personality i32 3 { define i8* @f(i1 %val) "coroutine.presplit"="1" personality i32 3 {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that coro-split removes cleanup code after coro.end in resume functions ; Tests that coro-split removes cleanup code after coro.end in resume functions
; and retains it in the start function. ; and retains it in the start function.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define i8* @f2(i1 %val) "coroutine.presplit"="1" personality i32 4 { define i8* @f2(i1 %val) "coroutine.presplit"="1" personality i32 4 {
entry: entry:

View File

@ -1,7 +1,7 @@
; Tests that coro-split can convert functions with hidden visibility. ; Tests that coro-split can convert functions with hidden visibility.
; These may be generated by a frontend such as Clang, when inlining with ; These may be generated by a frontend such as Clang, when inlining with
; '-fvisibility-inlines-hidden'. ; '-fvisibility-inlines-hidden'.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define hidden i8* @f() "coroutine.presplit"="1" { define hidden i8* @f() "coroutine.presplit"="1" {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that coro-split will convert coro.resume followed by a suspend to a ; Tests that coro-split will convert coro.resume followed by a suspend to a
; musttail call. ; musttail call.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define void @f() #0 { define void @f() #0 {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that coro-split will convert coro.resume followed by a suspend to a ; Tests that coro-split will convert coro.resume followed by a suspend to a
; musttail call. ; musttail call.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define void @f() #0 { define void @f() #0 {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that coro-split will convert coro.resume followed by a suspend to a ; Tests that coro-split will convert coro.resume followed by a suspend to a
; musttail call. ; musttail call.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define void @fakeresume1(i8*) { define void @fakeresume1(i8*) {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that coro-split will convert coro.resume followed by a suspend to a ; Tests that coro-split will convert coro.resume followed by a suspend to a
; musttail call. ; musttail call.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
define void @f() #0 { define void @f() #0 {
entry: entry:

View File

@ -1,6 +1,6 @@
; Tests that coro-split will optimize the lifetime.start maker of each local variable, ; Tests that coro-split will optimize the lifetime.start maker of each local variable,
; sink them to the places after the suspend block. ; sink them to the places after the suspend block.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
%"struct.std::coroutine_handle" = type { i8* } %"struct.std::coroutine_handle" = type { i8* }
%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } %"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" }

View File

@ -1,6 +1,6 @@
; Tests that coro-split will optimize the lifetime.start maker of each local variable, ; Tests that coro-split will optimize the lifetime.start maker of each local variable,
; sink them to the places after the suspend block. ; sink them to the places after the suspend block.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
%"struct.std::coroutine_handle" = type { i8* } %"struct.std::coroutine_handle" = type { i8* }
%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } %"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" }

View File

@ -1,6 +1,6 @@
; Corresponding to coro-split-sink-lifetime-01.ll. This file tests that whether the CoroFrame ; Corresponding to coro-split-sink-lifetime-01.ll. This file tests that whether the CoroFrame
; pass knows the operand of lifetime.start intrinsic may be GEP as well. ; pass knows the operand of lifetime.start intrinsic may be GEP as well.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
%"struct.std::coroutine_handle" = type { i8* } %"struct.std::coroutine_handle" = type { i8* }
%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } %"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" }

View File

@ -1,6 +1,6 @@
; Tests that coro-split will optimize the lifetime.start maker of each local variable, ; Tests that coro-split will optimize the lifetime.start maker of each local variable,
; sink them to the places after the suspend block. ; sink them to the places after the suspend block.
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
%"struct.std::coroutine_handle" = type { i8* } %"struct.std::coroutine_handle" = type { i8* }
%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } %"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" }

View File

@ -1,4 +1,4 @@
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s
declare i8* @malloc(i64) declare i8* @malloc(i64)
declare void @free(i8*) declare void @free(i8*)

View File

@ -1,5 +1,5 @@
; Test no suspend coroutines ; Test no suspend coroutines
; RUN: opt < %s -passes='cgscc(coro-split),simplify-cfg,early-cse,simplify-cfg' -S | FileCheck %s ; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse,simplifycfg' -S | FileCheck %s
; Coroutine with no-suspends will turn into: ; Coroutine with no-suspends will turn into:
; ;

View File

@ -17,7 +17,7 @@
; more than 16 calls in them. ; more than 16 calls in them.
; ;
; This test is extracted from the following C++ program compiled with Clang. ; This test is extracted from the following C++ program compiled with Clang.
; The IR is simplified with SROA, instcombine, and simplify-cfg. Then C++ ; The IR is simplified with SROA, instcombine, and simplifycfg. Then C++
; linkage stuff, attributes, target specific things, metadata and comments were ; linkage stuff, attributes, target specific things, metadata and comments were
; removed. The order of the fuctions is also made more predictable than Clang's ; removed. The order of the fuctions is also made more predictable than Clang's
; output order. ; output order.

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes=instcombine,simplify-cfg < %s 2>&1 | FileCheck %s ; RUN: opt -S -passes=instcombine,simplifycfg < %s 2>&1 | FileCheck %s
declare void @llvm.assume(i1 noundef) declare void @llvm.assume(i1 noundef)

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -S -passes='require<opt-remark-emit>,loop-unroll<peeling;no-runtime>,simplify-cfg,instcombine' -unroll-force-peel-count=3 -verify-dom-info | FileCheck %s ; RUN: opt < %s -S -passes='require<opt-remark-emit>,loop-unroll<peeling;no-runtime>,simplifycfg,instcombine' -unroll-force-peel-count=3 -verify-dom-info | FileCheck %s
define void @basic(i32 %K, i32 %N) { define void @basic(i32 %K, i32 %N) {
; CHECK-LABEL: @basic( ; CHECK-LABEL: @basic(

View File

@ -1,6 +1,6 @@
; RUN: opt < %s -S -loop-unroll -unroll-force-peel-count=3 -verify-dom-info -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -instcombine | FileCheck %s ; RUN: opt < %s -S -loop-unroll -unroll-force-peel-count=3 -verify-dom-info -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -instcombine | FileCheck %s
; RUN: opt < %s -S -passes='require<opt-remark-emit>,loop-unroll,simplify-cfg,instcombine' -unroll-force-peel-count=3 -verify-dom-info | FileCheck %s ; RUN: opt < %s -S -passes='require<opt-remark-emit>,loop-unroll,simplifycfg,instcombine' -unroll-force-peel-count=3 -verify-dom-info | FileCheck %s
; RUN: opt < %s -S -passes='require<opt-remark-emit>,loop-unroll<peeling;no-runtime>,simplify-cfg,instcombine' -unroll-force-peel-count=3 -verify-dom-info | FileCheck %s ; RUN: opt < %s -S -passes='require<opt-remark-emit>,loop-unroll<peeling;no-runtime>,simplifycfg,instcombine' -unroll-force-peel-count=3 -verify-dom-info | FileCheck %s
; Basic loop peeling - check that we can peel-off the first 3 loop iterations ; Basic loop peeling - check that we can peel-off the first 3 loop iterations
; when explicitly requested. ; when explicitly requested.

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -chr -instcombine -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -enable-new-pm=0 | FileCheck %s ; RUN: opt < %s -chr -instcombine -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -enable-new-pm=0 | FileCheck %s
; RUN: opt < %s -passes='require<profile-summary>,function(chr,instcombine,simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='require<profile-summary>,function(chr,instcombine,simplifycfg)' -S | FileCheck %s
declare void @foo() declare void @foo()
declare void @bar() declare void @bar()

View File

@ -1,5 +1,5 @@
; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s ; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
; RUN: opt < %s -passes='function-attrs,function(simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
; We should not infer 'nounwind' for/from a weak function, ; We should not infer 'nounwind' for/from a weak function,
; since it can be overriden by throwing implementation. ; since it can be overriden by throwing implementation.

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck --check-prefixes=ALL,OLDPM %s ; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck --check-prefixes=ALL,OLDPM %s
; RUN: opt -S -passes='function-attrs,function(simplify-cfg)' < %s | FileCheck --check-prefixes=ALL,NEWPM %s ; RUN: opt -S -passes='function-attrs,function(simplifycfg)' < %s | FileCheck --check-prefixes=ALL,NEWPM %s
declare void @may_throw() declare void @may_throw()

View File

@ -1,5 +1,5 @@
; RUN: opt < %s -prune-eh -S -enable-new-pm=0 | FileCheck %s ; RUN: opt < %s -prune-eh -S -enable-new-pm=0 | FileCheck %s
; RUN: opt < %s -passes='function-attrs,function(simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
declare void @nounwind() nounwind declare void @nounwind() nounwind

View File

@ -1,5 +1,5 @@
; RUN: opt -prune-eh -enable-new-pm=0 -S < %s | FileCheck %s ; RUN: opt -prune-eh -enable-new-pm=0 -S < %s | FileCheck %s
; RUN: opt < %s -passes='function-attrs,function(simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
declare void @noreturn() declare void @noreturn()

View File

@ -1,5 +1,5 @@
; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s ; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
; RUN: opt < %s -passes='function-attrs,function(simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
declare void @nounwind() nounwind declare void @nounwind() nounwind

View File

@ -1,5 +1,5 @@
; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck %s ; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck %s
; RUN: opt -S -passes='function-attrs,function(simplify-cfg)' < %s | FileCheck %s ; RUN: opt -S -passes='function-attrs,function(simplifycfg)' < %s | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu" target triple = "x86_64-unknown-linux-gnu"

View File

@ -1,9 +1,9 @@
; PruneEH is less powerful than simplify-cfg in terms of cfg simplification, ; PruneEH is less powerful than simplifycfg in terms of cfg simplification,
; so it leaves some of the unreachable stuff hanging around. ; so it leaves some of the unreachable stuff hanging around.
; Checking it with CHECK-OLD. ; Checking it with CHECK-OLD.
; ;
; RUN: opt -prune-eh -enable-new-pm=0 -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-OLD ; RUN: opt -prune-eh -enable-new-pm=0 -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-OLD
; RUN: opt -passes='function-attrs,function(simplify-cfg)' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NEW ; RUN: opt -passes='function-attrs,function(simplifycfg)' -S < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NEW
target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32" target datalayout = "e-m:x-p:32:32-i64:64-f80:32-n8:16:32-a:0:32-S32"
target triple = "i386-pc-windows-msvc" target triple = "i386-pc-windows-msvc"

View File

@ -1,5 +1,5 @@
; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s ; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
; RUN: opt < %s -passes='function-attrs,function(simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
; CHECK-LABEL: define internal i32 @foo() ; CHECK-LABEL: define internal i32 @foo()
define internal i32 @foo() personality i32 (...)* @__gxx_personality_v0 { define internal i32 @foo() personality i32 (...)* @__gxx_personality_v0 {

View File

@ -1,5 +1,5 @@
; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck %s ; RUN: opt -S -prune-eh -enable-new-pm=0 < %s | FileCheck %s
; RUN: opt -S -passes='function-attrs,function(simplify-cfg)' < %s | FileCheck %s ; RUN: opt -S -passes='function-attrs,function(simplifycfg)' < %s | FileCheck %s
; Don't remove invokes of nounwind functions if the personality handles async ; Don't remove invokes of nounwind functions if the personality handles async
; exceptions. The @div function in this test can fault, even though it can't ; exceptions. The @div function in this test can fault, even though it can't

View File

@ -1,5 +1,5 @@
; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s ; RUN: opt < %s -prune-eh -enable-new-pm=0 -S | FileCheck %s
; RUN: opt < %s -passes='function-attrs,function(simplify-cfg)' -S | FileCheck %s ; RUN: opt < %s -passes='function-attrs,function(simplifycfg)' -S | FileCheck %s
declare void @nounwind() nounwind declare void @nounwind() nounwind

View File

@ -1,4 +1,4 @@
; RUN: opt -passes=simplify-cfg -S < %s | FileCheck %s ; RUN: opt -passes=simplifycfg -S < %s | FileCheck %s
; Ensure that we do not crash when trying to evaluate alignment of a <1 x ???*>. ; Ensure that we do not crash when trying to evaluate alignment of a <1 x ???*>.

View File

@ -5,11 +5,11 @@
; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -mtriple=arm -relocation-model=rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE ; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -mtriple=arm -relocation-model=rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -mtriple=arm -relocation-model=ropi-rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE ; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -mtriple=arm -relocation-model=ropi-rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' -mtriple=arm -relocation-model=static < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ENABLE ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' -mtriple=arm -relocation-model=static < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ENABLE
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' -mtriple=arm -relocation-model=pic < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ENABLE ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' -mtriple=arm -relocation-model=pic < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ENABLE
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' -mtriple=arm -relocation-model=ropi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' -mtriple=arm -relocation-model=ropi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' -mtriple=arm -relocation-model=rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' -mtriple=arm -relocation-model=rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' -mtriple=arm -relocation-model=ropi-rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' -mtriple=arm -relocation-model=ropi-rwpi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=DISABLE
; CHECK: @{{.*}} = private unnamed_addr constant [3 x i32] [i32 1234, i32 5678, i32 15532] ; CHECK: @{{.*}} = private unnamed_addr constant [3 x i32] [i32 1234, i32 5678, i32 15532]
; ENABLE: @{{.*}} = private unnamed_addr constant [3 x i32*] [i32* @c1, i32* @c2, i32* @c3] ; ENABLE: @{{.*}} = private unnamed_addr constant [3 x i32*] [i32* @c1, i32* @c2, i32* @c3]

View File

@ -2,8 +2,8 @@
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -forward-switch-cond=false -S | FileCheck %s --check-prefix=NO_FWD ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -forward-switch-cond=false -S | FileCheck %s --check-prefix=NO_FWD
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -forward-switch-cond=true -S | FileCheck %s --check-prefix=FWD ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -forward-switch-cond=true -S | FileCheck %s --check-prefix=FWD
; RUN: opt < %s -passes='simplify-cfg<no-forward-switch-cond>' -S | FileCheck %s --check-prefix=NO_FWD ; RUN: opt < %s -passes='simplifycfg<no-forward-switch-cond>' -S | FileCheck %s --check-prefix=NO_FWD
; RUN: opt < %s -passes='simplify-cfg<forward-switch-cond>' -S | FileCheck %s --check-prefix=FWD ; RUN: opt < %s -passes='simplifycfg<forward-switch-cond>' -S | FileCheck %s --check-prefix=FWD
; PR10131 ; PR10131

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -S %s | FileCheck %s ; RUN: opt -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -S %s | FileCheck %s
; RUN: opt -passes='simplify-cfg<switch-to-lookup>' -S %s | FileCheck %s ; RUN: opt -passes='simplifycfg<switch-to-lookup>' -S %s | FileCheck %s
; rdar://15268442 ; rdar://15268442
target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
; RUN: opt < %s -passes='simplify-cfg<switch-to-lookup>' -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s ; RUN: opt < %s -passes='simplifycfg<switch-to-lookup>' -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
; In the presence of "-no-jump-tables"="true", simplifycfg should not convert switches to lookup tables. ; In the presence of "-no-jump-tables"="true", simplifycfg should not convert switches to lookup tables.

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -sink-common-insts -S | FileCheck %s ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -sink-common-insts -S | FileCheck %s
; RUN: opt < %s -passes='simplify-cfg<sink-common-insts>' -S | FileCheck %s ; RUN: opt < %s -passes='simplifycfg<sink-common-insts>' -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 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-pc-linux-gnu" target triple = "x86_64-pc-linux-gnu"

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s ; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s
; rdar://17887153 ; rdar://17887153
target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s ; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s
; RUN: opt -S -passes='simplify-cfg<switch-to-lookup>' < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s ; RUN: opt -S -passes='simplifycfg<switch-to-lookup>' < %s -mtriple=x86_64-apple-darwin12.0.0 | FileCheck %s
; rdar://17735071 ; rdar://17735071
target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target datalayout = "e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -simplifycfg -switch-to-lookup=true -keep-loops=false -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s ; RUN: opt < %s -simplifycfg -switch-to-lookup=true -keep-loops=false -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
; RUN: opt < %s -passes='simplify-cfg<no-keep-loops;switch-to-lookup>' -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s ; RUN: opt < %s -passes='simplifycfg<no-keep-loops;switch-to-lookup>' -S -mtriple=x86_64-unknown-linux-gnu | 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" 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" target triple = "x86_64-unknown-linux-gnu"

View File

@ -2,7 +2,7 @@
; Test CFG simplify removal of branch instructions. ; Test CFG simplify removal of branch instructions.
; ;
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s
; RUN: opt < %s -passes=simplify-cfg -S | FileCheck %s ; RUN: opt < %s -passes=simplifycfg -S | FileCheck %s
define void @test1() { define void @test1() {
; CHECK-LABEL: @test1( ; CHECK-LABEL: @test1(

View File

@ -1,9 +1,9 @@
; RUN: opt %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s --check-prefix=NORMAL ; RUN: opt %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s --check-prefix=NORMAL
; RUN: opt %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -bonus-inst-threshold=2 | FileCheck %s --check-prefix=AGGRESSIVE ; RUN: opt %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -bonus-inst-threshold=2 | FileCheck %s --check-prefix=AGGRESSIVE
; RUN: opt %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -bonus-inst-threshold=4 | FileCheck %s --check-prefix=WAYAGGRESSIVE ; RUN: opt %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S -bonus-inst-threshold=4 | FileCheck %s --check-prefix=WAYAGGRESSIVE
; RUN: opt %s -passes=simplify-cfg -S | FileCheck %s --check-prefix=NORMAL ; RUN: opt %s -passes=simplifycfg -S | FileCheck %s --check-prefix=NORMAL
; RUN: opt %s -passes='simplify-cfg<bonus-inst-threshold=2>' -S | FileCheck %s --check-prefix=AGGRESSIVE ; RUN: opt %s -passes='simplifycfg<bonus-inst-threshold=2>' -S | FileCheck %s --check-prefix=AGGRESSIVE
; RUN: opt %s -passes='simplify-cfg<bonus-inst-threshold=4>' -S | FileCheck %s --check-prefix=WAYAGGRESSIVE ; RUN: opt %s -passes='simplifycfg<bonus-inst-threshold=4>' -S | FileCheck %s --check-prefix=WAYAGGRESSIVE
define i32 @foo(i32 %a, i32 %b, i32 %c, i32 %d, i32* %input) { define i32 @foo(i32 %a, i32 %b, i32 %c, i32 %d, i32* %input) {
; NORMAL-LABEL: @foo( ; NORMAL-LABEL: @foo(

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s ; RUN: opt -S -simplifycfg -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s
; RUN: opt -S -passes=simplify-cfg < %s | FileCheck %s ; RUN: opt -S -passes=simplifycfg < %s | FileCheck %s
declare void @foo() convergent declare void @foo() convergent

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -keep-loops=false -S < %s | FileCheck %s ; RUN: opt -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -keep-loops=false -S < %s | FileCheck %s
; RUN: opt -passes='simplify-cfg<no-keep-loops>' -S < %s | FileCheck %s ; RUN: opt -passes='simplifycfg<no-keep-loops>' -S < %s | FileCheck %s
; It's not worthwhile to if-convert one of the phi nodes and leave ; It's not worthwhile to if-convert one of the phi nodes and leave
; the other behind, because that still requires a branch. If ; the other behind, because that still requires a branch. If

View File

@ -1,5 +1,5 @@
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -sink-common-insts -S | FileCheck %s ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -sink-common-insts -S | FileCheck %s
; RUN: opt < %s -passes='simplify-cfg<sink-common-insts>' -S | FileCheck %s ; RUN: opt < %s -passes='simplifycfg<sink-common-insts>' -S | FileCheck %s
define i1 @test1(i1 zeroext %flag, i8* %y) #0 { define i1 @test1(i1 zeroext %flag, i8* %y) #0 {
entry: entry:

View File

@ -1,5 +1,5 @@
; RUN: opt -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -keep-loops=false -S < %s | FileCheck %s ; RUN: opt -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -keep-loops=false -S < %s | FileCheck %s
; RUN: opt -passes='simplify-cfg<no-keep-loops>' -S < %s | FileCheck %s ; RUN: opt -passes='simplifycfg<no-keep-loops>' -S < %s | FileCheck %s
define void @test1(i32 %n) #0 { define void @test1(i32 %n) #0 {
entry: entry:

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -S | FileCheck %s ; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -switch-to-lookup -S | FileCheck %s
; RUN: opt < %s -passes='simplify-cfg<switch-to-lookup>' -S | FileCheck %s ; RUN: opt < %s -passes='simplifycfg<switch-to-lookup>' -S | FileCheck %s
target datalayout = "e-n32" target datalayout = "e-n32"

View File

@ -1,5 +1,5 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt %s -S -passes='simplify-cfg<switch-to-lookup>' -simplifycfg-require-and-preserve-domtree=1 | FileCheck %s ; RUN: opt %s -S -passes='simplifycfg<switch-to-lookup>' -simplifycfg-require-and-preserve-domtree=1 | FileCheck %s
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
declare void @foo(i32) declare void @foo(i32)
@ -220,7 +220,7 @@ default:
} }
; Check that we can eliminate both dead cases and dead defaults ; Check that we can eliminate both dead cases and dead defaults
; within a single run of simplify-cfg ; within a single run of simplifycfg
define void @test7(i8 %a) { define void @test7(i8 %a) {
; CHECK-LABEL: @test7( ; CHECK-LABEL: @test7(
; CHECK-NEXT: [[AND:%.*]] = and i8 [[A:%.*]], -2 ; CHECK-NEXT: [[AND:%.*]] = and i8 [[A:%.*]], -2

View File

@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt %s -keep-loops=false -switch-to-lookup=true -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s ; RUN: opt %s -keep-loops=false -switch-to-lookup=true -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s
; RUN: opt %s -passes='simplify-cfg<no-keep-loops;switch-to-lookup>' -S | FileCheck %s ; RUN: opt %s -passes='simplifycfg<no-keep-loops;switch-to-lookup>' -S | FileCheck %s
define void @f6() #0 { define void @f6() #0 {
; CHECK-LABEL: @f6( ; CHECK-LABEL: @f6(

Some files were not shown because too many files have changed in this diff Show More