Index: llvm/include/llvm/Analysis/InlineCost.h =================================================================== --- llvm/include/llvm/Analysis/InlineCost.h +++ llvm/include/llvm/Analysis/InlineCost.h @@ -212,7 +212,7 @@ Optional ComputeFullInlineCost; /// Indicate whether we should allow inline deferral. - Optional EnableDeferral = true; + Optional EnableDeferral; /// Indicate whether we allow inlining for recursive call. Optional AllowRecursiveCall = false; Index: llvm/lib/Analysis/InlineAdvisor.cpp =================================================================== --- llvm/lib/Analysis/InlineAdvisor.cpp +++ llvm/lib/Analysis/InlineAdvisor.cpp @@ -40,6 +40,10 @@ " callsites processed by inliner but decided" " to be not inlined")); +static cl::opt EnableInlineDeferral( + "inline-deferral", cl::init(false), cl::Hidden, + cl::desc("Enable deferred inlining")); + // An integer used to limit the cost of inline deferral. The default negative // number tells shouldBeDeferred to only take the secondary cost into account. static cl::opt @@ -136,8 +140,9 @@ return getInlineCost(CB, Params, CalleeTTI, GetAssumptionCache, GetTLI, GetBFI, PSI, RemarksEnabled ? &ORE : nullptr); }; - return llvm::shouldInline(CB, GetInlineCost, ORE, - Params.EnableDeferral.getValueOr(false)); + return llvm::shouldInline( + CB, GetInlineCost, ORE, + Params.EnableDeferral.getValueOr(EnableInlineDeferral)); } std::unique_ptr Index: llvm/test/Transforms/Inline/cgscc-incremental-invalidate.ll =================================================================== --- llvm/test/Transforms/Inline/cgscc-incremental-invalidate.ll +++ llvm/test/Transforms/Inline/cgscc-incremental-invalidate.ll @@ -1,7 +1,7 @@ ; Test for a subtle bug when computing analyses during inlining and mutating ; the SCC structure. Without care, this can fail to invalidate analyses. ; -; RUN: opt < %s -aa-pipeline= -passes='cgscc(inline,function(verify))' -debug-pass-manager -S 2>&1 | FileCheck %s +; RUN: opt < %s -aa-pipeline= -passes='cgscc(inline,function(verify))' -debug-pass-manager -inline-deferral -S 2>&1 | FileCheck %s ; First we check that the passes run in the way we expect. Otherwise this test ; may stop testing anything. Index: llvm/test/Transforms/Inline/exponential-deferred-inlining.ll =================================================================== --- llvm/test/Transforms/Inline/exponential-deferred-inlining.ll +++ llvm/test/Transforms/Inline/exponential-deferred-inlining.ll @@ -20,1154 +20,7 @@ } define internal void @f2() { - call void @f1() - call void @f1() - call void @f1() - ret void -} - -define internal void @f3() { - call void @f2() - call void @f2() - ret void -} - -define internal void @f4() { - call void @f3() - call void @f3() - ret void -} - -define internal void @f5() { - call void @f4() - call void @f4() - ret void -} - -define internal void @f6() { - call void @f5() - call void @f5() - ret void -} - -define void @f7() { -; CHECK-LABEL: @f7( -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() +; CHECK-LABEL: @f2( ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: call void @foo() @@ -1205,6 +58,61 @@ ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: call void @foo() ; CHECK-NEXT: ret void +; + call void @f1() + call void @f1() + call void @f1() + ret void +} + +define internal void @f3() { + call void @f2() + call void @f2() + ret void +} + +define internal void @f4() { + call void @f3() + call void @f3() + ret void +} + +define internal void @f5() { + call void @f4() + call void @f4() + ret void +} + +define internal void @f6() { +; CHECK-LABEL: @f6( +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: call void @f2() +; CHECK-NEXT: ret void +; + call void @f5() + call void @f5() + ret void +} + +define void @f7() { +; CHECK-LABEL: @f7( +; CHECK-NEXT: call void @f6() +; CHECK-NEXT: call void @f6() +; CHECK-NEXT: ret void ; call void @f6() call void @f6()