From c8dba682bba9c80654d7a10331f718da9b7b0475 Mon Sep 17 00:00:00 2001 From: Teresa Johnson Date: Wed, 24 Oct 2018 18:53:47 +0000 Subject: [PATCH] [hot-cold-split] Name split functions with ".cold" suffix Summary: The current default of appending "_"+entry block label to the new extracted cold function breaks demangling. Change the deliminator from "_" to "." to enable demangling. Because the header block label will be empty for release compile code, use "extracted" after the "." when the label is empty. Additionally, add a mechanism for the client to pass in an alternate suffix applied after the ".", and have the hot cold split pass use "cold."+Count, where the Count is currently 1 but can be used to uniquely number multiple cold functions split out from the same function with D53588. Reviewers: sebpop, hiraditya Subscribers: llvm-commits, erik.pilkington Differential Revision: https://reviews.llvm.org/D53534 llvm-svn: 345178 --- llvm/include/llvm/Transforms/Utils/CodeExtractor.h | 11 +++++++++-- llvm/lib/Transforms/IPO/HotColdSplitting.cpp | 16 +++++++++------- llvm/lib/Transforms/Utils/CodeExtractor.cpp | 16 +++++++++++----- llvm/test/Transforms/BlockExtractor/extract-blocks.ll | 8 ++++---- .../Transforms/CodeExtractor/ExtractedFnEntryCount.ll | 2 +- llvm/test/Transforms/CodeExtractor/PartialInlineAnd.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/PartialInlineAndOr.ll | 2 +- .../Transforms/CodeExtractor/PartialInlineAttributes.ll | 8 ++++---- llvm/test/Transforms/CodeExtractor/PartialInlineDebug.ll | 8 ++++---- .../Transforms/CodeExtractor/PartialInlineEntryUpdate.ll | 6 +++--- .../CodeExtractor/PartialInlineInvokeProducesOutVal.ll | 4 ++-- .../Transforms/CodeExtractor/PartialInlineLiveAcross.ll | 4 ++-- .../Transforms/CodeExtractor/PartialInlineNoLiveOut.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll | 4 ++-- .../CodeExtractor/PartialInlinePGOMultiRegion.ll | 8 ++++---- .../Transforms/CodeExtractor/PartialInlinePGORegion.ll | 4 ++-- .../test/Transforms/CodeExtractor/PartialInlineVarArg.ll | 6 +++--- .../CodeExtractor/PartialInlineVarArgsDebug.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/SingleCondition.ll | 2 +- .../CodeExtractor/X86/InheritTargetAttributes.ll | 2 +- llvm/test/Transforms/CodeExtractor/cost.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/cost_meta.ll | 2 +- llvm/test/Transforms/CodeExtractor/inline_eh.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/inline_eh_1.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/live_shrink.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll | 4 ++-- llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll | 2 +- .../Transforms/CodeExtractor/live_shrink_multiple.ll | 2 +- llvm/test/Transforms/CodeExtractor/unreachable-block.ll | 4 ++-- llvm/test/Transforms/HotColdSplit/minsize.ll | 4 ++-- llvm/test/Transforms/HotColdSplit/split-cold-2.ll | 4 ++-- .../Transforms/HotColdSplit/split-out-dbg-val-of-arg.ll | 2 +- llvm/test/tools/llvm-extract/extract-block.ll | 2 +- llvm/test/tools/llvm-extract/extract-multiple-blocks.ll | 4 ++-- 35 files changed, 94 insertions(+), 79 deletions(-) diff --git a/llvm/include/llvm/Transforms/Utils/CodeExtractor.h b/llvm/include/llvm/Transforms/Utils/CodeExtractor.h index 0e5254a..13bef84 100644 --- a/llvm/include/llvm/Transforms/Utils/CodeExtractor.h +++ b/llvm/include/llvm/Transforms/Utils/CodeExtractor.h @@ -64,6 +64,11 @@ class Value; unsigned NumExitBlocks = std::numeric_limits::max(); Type *RetTy; + // Suffix to use when creating extracted function (appended to the original + // function name + "."). If empty, the default is to use the entry block + // label, if non-empty, otherwise "extracted". + std::string Suffix; + public: /// Create a code extractor for a sequence of blocks. /// @@ -78,7 +83,8 @@ class Value; CodeExtractor(ArrayRef BBs, DominatorTree *DT = nullptr, bool AggregateArgs = false, BlockFrequencyInfo *BFI = nullptr, BranchProbabilityInfo *BPI = nullptr, - bool AllowVarArgs = false, bool AllowAlloca = false); + bool AllowVarArgs = false, bool AllowAlloca = false, + std::string Suffix = ""); /// Create a code extractor for a loop body. /// @@ -86,7 +92,8 @@ class Value; /// block sequence of the loop. CodeExtractor(DominatorTree &DT, Loop &L, bool AggregateArgs = false, BlockFrequencyInfo *BFI = nullptr, - BranchProbabilityInfo *BPI = nullptr); + BranchProbabilityInfo *BPI = nullptr, + std::string Suffix = ""); /// Perform the extraction, returning the new function. /// diff --git a/llvm/lib/Transforms/IPO/HotColdSplitting.cpp b/llvm/lib/Transforms/IPO/HotColdSplitting.cpp index d3e086e..a63cd84 100644 --- a/llvm/lib/Transforms/IPO/HotColdSplitting.cpp +++ b/llvm/lib/Transforms/IPO/HotColdSplitting.cpp @@ -265,7 +265,7 @@ private: DominatorTree *DT, PostDomTree *PDT); Function *extractColdRegion(const SmallVectorImpl &Region, DominatorTree *DT, BlockFrequencyInfo *BFI, - OptimizationRemarkEmitter &ORE); + OptimizationRemarkEmitter &ORE, unsigned Count); bool isOutlineCandidate(const SmallVectorImpl &Region, const BasicBlock *Exit) const { if (!Exit) @@ -331,16 +331,18 @@ bool HotColdSplitting::shouldOutlineFrom(const Function &F) const { return true; } -Function * -HotColdSplitting::extractColdRegion(const SmallVectorImpl &Region, - DominatorTree *DT, BlockFrequencyInfo *BFI, - OptimizationRemarkEmitter &ORE) { +Function *HotColdSplitting::extractColdRegion( + const SmallVectorImpl &Region, DominatorTree *DT, + BlockFrequencyInfo *BFI, OptimizationRemarkEmitter &ORE, unsigned Count) { assert(!Region.empty()); LLVM_DEBUG(for (auto *BB : Region) llvm::dbgs() << "\nExtracting: " << *BB;); // TODO: Pass BFI and BPI to update profile information. - CodeExtractor CE(Region, DT); + CodeExtractor CE(Region, DT, /* AggregateArgs */ false, /* BFI */ nullptr, + /* BPI */ nullptr, /* AllowVarArgs */ false, + /* AllowAlloca */ false, + /* Suffix */ "cold." + std::to_string(Count)); SetVector Inputs, Outputs, Sinks; CE.findInputsOutputs(Inputs, Outputs, Sinks); @@ -426,7 +428,7 @@ const Function *HotColdSplitting::outlineColdBlocks(Function &F, ++NumColdSESEFound; ValidColdRegion.push_back(ExitColdRegion); // Candidate for outlining. FIXME: Continue outlining. - return extractColdRegion(ValidColdRegion, DT, BFI, ORE); + return extractColdRegion(ValidColdRegion, DT, BFI, ORE, /* Count */ 1); } } } diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp index 27b9825..328fe1f 100644 --- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp +++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp @@ -228,19 +228,21 @@ buildExtractionBlockSet(ArrayRef BBs, DominatorTree *DT, CodeExtractor::CodeExtractor(ArrayRef BBs, DominatorTree *DT, bool AggregateArgs, BlockFrequencyInfo *BFI, BranchProbabilityInfo *BPI, bool AllowVarArgs, - bool AllowAlloca) + bool AllowAlloca, std::string Suffix) : DT(DT), AggregateArgs(AggregateArgs || AggregateArgsOpt), BFI(BFI), BPI(BPI), AllowVarArgs(AllowVarArgs), - Blocks(buildExtractionBlockSet(BBs, DT, AllowVarArgs, AllowAlloca)) {} + Blocks(buildExtractionBlockSet(BBs, DT, AllowVarArgs, AllowAlloca)), + Suffix(Suffix) {} CodeExtractor::CodeExtractor(DominatorTree &DT, Loop &L, bool AggregateArgs, BlockFrequencyInfo *BFI, - BranchProbabilityInfo *BPI) + BranchProbabilityInfo *BPI, std::string Suffix) : DT(&DT), AggregateArgs(AggregateArgs || AggregateArgsOpt), BFI(BFI), BPI(BPI), AllowVarArgs(false), Blocks(buildExtractionBlockSet(L.getBlocks(), &DT, /* AllowVarArgs */ false, - /* AllowAlloca */ false)) {} + /* AllowAlloca */ false)), + Suffix(Suffix) {} /// definedInRegion - Return true if the specified value is defined in the /// extracted region. @@ -669,10 +671,14 @@ Function *CodeExtractor::constructFunction(const ValueSet &inputs, FunctionType::get(RetTy, paramTy, AllowVarArgs && oldFunction->isVarArg()); + std::string SuffixToUse = + Suffix.empty() + ? (header->getName().empty() ? "extracted" : header->getName().str()) + : Suffix; // Create the new function Function *newFunction = Function::Create( funcType, GlobalValue::InternalLinkage, oldFunction->getAddressSpace(), - oldFunction->getName() + "_" + header->getName(), M); + oldFunction->getName() + "." + SuffixToUse, M); // If the old function is no-throw, so is the new one. if (oldFunction->doesNotThrow()) newFunction->setDoesNotThrow(); diff --git a/llvm/test/Transforms/BlockExtractor/extract-blocks.ll b/llvm/test/Transforms/BlockExtractor/extract-blocks.ll index 47e5fc3..e720953 100644 --- a/llvm/test/Transforms/BlockExtractor/extract-blocks.ll +++ b/llvm/test/Transforms/BlockExtractor/extract-blocks.ll @@ -4,11 +4,11 @@ ; RUN: opt -S -extract-blocks -extract-blocks-file=%t -extract-blocks-erase-funcs %s | FileCheck %s --check-prefix=CHECK-ERASE ; CHECK-NO-ERASE: @foo( -; CHECK-NO-ERASE: @foo_bb9( -; CHECK-NO-ERASE: @foo_bb20( +; CHECK-NO-ERASE: @foo.bb9( +; CHECK-NO-ERASE: @foo.bb20( ; CHECK-ERASE: declare i32 @foo( -; CHECK-ERASE: @foo_bb9( -; CHECK-ERASE: @foo_bb20( +; CHECK-ERASE: @foo.bb9( +; CHECK-ERASE: @foo.bb20( define i32 @foo(i32 %arg, i32 %arg1) { bb: %tmp5 = icmp sgt i32 %arg, 0 diff --git a/llvm/test/Transforms/CodeExtractor/ExtractedFnEntryCount.ll b/llvm/test/Transforms/CodeExtractor/ExtractedFnEntryCount.ll index 8313cfa..55c44e1 100644 --- a/llvm/test/Transforms/CodeExtractor/ExtractedFnEntryCount.ll +++ b/llvm/test/Transforms/CodeExtractor/ExtractedFnEntryCount.ll @@ -22,7 +22,7 @@ entry: ret i32 %val } -; CHECK: @inlinedFunc.1_if.then(i1 %cond) !prof [[COUNT1:![0-9]+]] +; CHECK: @inlinedFunc.1.if.then(i1 %cond) !prof [[COUNT1:![0-9]+]] !llvm.module.flags = !{!0} diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAnd.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAnd.ll index d32d834..6d555b7 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAnd.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAnd.ll @@ -41,11 +41,11 @@ bb: ; CHECK-LABEL: @dummy_caller ; CHECK: br i1 ; CHECK: br i1 -; CHECK: call void @bar.1_ +; CHECK: call void @bar.1. ; LIMIT-LABEL: @dummy_caller ; LIMIT: br i1 ; LIMIT-NOT: br -; LIMIT: call void @bar.1_ +; LIMIT: call void @bar.1. %tmp = tail call i32 @bar(i32 %arg) ret i32 %tmp } diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAndOr.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAndOr.ll index 485e06c..9da9ed4 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAndOr.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAndOr.ll @@ -49,7 +49,7 @@ bb: ; CHECK: br i1 ; CHECK: br i1 ; CHECK: br i1 -; CHECK: call void @bar.1_ +; CHECK: call void @bar.1. ; LIMIT-LABEL: @dummy_caller ; LIMIT-NOT: br i1 ; LIMIT: call i32 @bar diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAttributes.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAttributes.ll index 4017084..18c934b 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAttributes.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAttributes.ll @@ -55,9 +55,9 @@ if.end: ret i32 %add } ; CHECK-LABEL: @caller -; CHECK: call void @callee_most.2_if.then(i32 %v +; CHECK: call void @callee_most.2.if.then(i32 %v ; CHECK: call i32 @callee_noinline(i32 %v) -; CHECK: call void @callee_writeonly.1_if.then(i32 %v +; CHECK: call void @callee_writeonly.1.if.then(i32 %v define i32 @caller(i32 %v) { entry: %c1 = call i32 @callee_most(i32 %v) @@ -66,8 +66,8 @@ entry: ret i32 %c3 } -; CHECK: define internal void @callee_writeonly.1_if.then(i32 %v, i32* %sub.out) { -; CHECK: define internal void @callee_most.2_if.then(i32 %v, i32* %sub.out) [[FN_ATTRS:#[0-9]+]] +; CHECK: define internal void @callee_writeonly.1.if.then(i32 %v, i32* %sub.out) { +; CHECK: define internal void @callee_most.2.if.then(i32 %v, i32* %sub.out) [[FN_ATTRS:#[0-9]+]] ; attributes to preserve attributes #0 = { diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineDebug.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineDebug.ll index 5d9e64dc..c0bc66d 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineDebug.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineDebug.ll @@ -23,7 +23,7 @@ if.end: ; preds = %if.then, %entry ; CHECK-LABEL: @caller ; CHECK: codeRepl.i: -; CHECK-NEXT: call void @callee.2_if.then(i32 %v, i32* %mul.loc.i), !dbg ![[DBG2:[0-9]+]] +; CHECK-NEXT: call void @callee.2.if.then(i32 %v, i32* %mul.loc.i), !dbg ![[DBG2:[0-9]+]] define i32 @caller(i32 %v) !dbg !8 { entry: %call = call i32 @callee(i32 %v), !dbg !14 @@ -53,17 +53,17 @@ if.end: ; CHECK-LABEL: @caller2 ; CHECK: codeRepl.i: -; CHECK-NEXT: call void @callee2.1_if.then(i32 %v, i32* %sub.loc.i), !dbg ![[DBG4:[0-9]+]] +; CHECK-NEXT: call void @callee2.1.if.then(i32 %v, i32* %sub.loc.i), !dbg ![[DBG4:[0-9]+]] define i32 @caller2(i32 %v) !dbg !21 { entry: %call = call i32 @callee2(i32 %v), !dbg !22 ret i32 %call } -; CHECK-LABEL: define internal void @callee2.1_if.then +; CHECK-LABEL: define internal void @callee2.1.if.then ; CHECK: br label %if.then, !dbg ![[DBG5:[0-9]+]] -; CHECK-LABEL: define internal void @callee.2_if.then +; CHECK-LABEL: define internal void @callee.2.if.then ; CHECK: br label %if.then, !dbg ![[DBG6:[0-9]+]] ; CHECK: ![[DBG1]] = !DILocation(line: 10, column: 7, diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineEntryUpdate.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineEntryUpdate.ll index 3a7a975..0efc829 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineEntryUpdate.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineEntryUpdate.ll @@ -17,9 +17,9 @@ define internal i32 @Caller1(i1 %cond, i32* align 2 %align.val) !prof !3{ entry: ; CHECK-LABEL: @Caller1 ; CHECK: br -; CHECK: call void @Func.1_ +; CHECK: call void @Func.1. ; CHECK: br -; CHECK: call void @Func.1_ +; CHECK: call void @Func.1. %val = call i32 @Func(i1 %cond, i32* %align.val) %val2 = call i32 @Func(i1 %cond, i32* %align.val) ret i32 %val @@ -29,7 +29,7 @@ define internal i32 @Caller2(i1 %cond, i32* align 2 %align.val) !prof !2{ entry: ; CHECK-LABEL: @Caller2 ; CHECK: br -; CHECK: call void @Func.1_ +; CHECK: call void @Func.1. %val = call i32 @Func(i1 %cond, i32* %align.val) ret i32 %val } diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll index bba7ad0..bc6f780 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll @@ -26,14 +26,14 @@ bb5: ; preds = %bb4, %bb1, %bb ; CHECK-LABEL: bb: ; CHECK-NEXT: [[CALL26LOC:%.*]] = alloca i8* ; CHECK-LABEL: codeRepl.i: -; CHECK-NEXT: call void @bar.1_bb1(i8** [[CALL26LOC]]) +; CHECK-NEXT: call void @bar.1.bb1(i8** [[CALL26LOC]]) define i8* @dummy_caller(i32 %arg) { bb: %tmp = tail call i8* @bar(i32 %arg) ret i8* %tmp } -; CHECK-LABEL: define internal void @bar.1_bb1 +; CHECK-LABEL: define internal void @bar.1.bb1 ; CHECK-LABEL: bb1: ; CHECK-NEXT: %call26 = invoke i8* @invoke_callee() ; CHECK-NEXT: to label %cont unwind label %lpad diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineLiveAcross.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineLiveAcross.ll index e8a4d12..1e1a1b0 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineLiveAcross.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineLiveAcross.ll @@ -36,7 +36,7 @@ declare void @foo(...) local_unnamed_addr #1 define i32 @dummy_caller(i32 %arg) local_unnamed_addr #0 { ; CHECK-LABEL: @dummy_caller ; CHECK: codeRepl.i: -; CHECK: call void @test.1_bb2() +; CHECK: call void @test.1.bb2() ; CHECK-NOT: load ; CHECK br @@ -45,7 +45,7 @@ bb: ret i32 %tmp } -; CHECK-LABEL: define internal void @test.1_bb2() +; CHECK-LABEL: define internal void @test.1.bb2() ; CHECK: .exitStub: ; CHECK-NOT: store i32 %tmp7, i32* %tmp7.out ; CHECK: ret diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineNoLiveOut.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineNoLiveOut.ll index a48ff4b..d41492f 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineNoLiveOut.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineNoLiveOut.ll @@ -39,7 +39,7 @@ declare void @foo(...) local_unnamed_addr #0 define i32 @dummy_caller(i32 %arg) local_unnamed_addr #0 { ; CHECK-LABEL: @dummy_caller ; CHECK: codeRepl.i: -; CHECK: call void @test.1_bb2() +; CHECK: call void @test.1.bb2() ; CHECK-NOT: load ; CHECK br bb: @@ -47,7 +47,7 @@ bb: ret i32 %tmp } -; CHECK-LABEL: define internal void @test.1_bb2() +; CHECK-LABEL: define internal void @test.1.bb2() ; CHECK: .exitStub: ; CHECK-NOT: store i32 %tmp7, i32* %tmp7.out ; CHECK: ret diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll index 758945c..cbf7a47 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineOr.ll @@ -41,7 +41,7 @@ bb: ; CHECK-LABEL: @dummy_caller ; CHECK: br i1 ; CHECK: br i1 -; CHECK: call void @bar.2_ +; CHECK: call void @bar.2. ; LIMIT-LABEL: @dummy_caller ; LIMIT-NOT: br ; LIMIT: call i32 @bar( @@ -84,7 +84,7 @@ bb5: ; preds = %bb4, %bb1 define i32 @dummy_caller2(i32 %arg) local_unnamed_addr #0 { ; CHECK: br i1 ; CHECK: br i1 -; CHECK: call {{.*}} @bar_multi_ret.1_ +; CHECK: call {{.*}} @bar_multi_ret.1. %tmp = tail call i32 @bar_multi_ret(i32 %arg) ret i32 %tmp } diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll index fb6d1c3..09d0e25 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll @@ -52,12 +52,12 @@ bb: ; CHECK: br i1 ; CHECK: br i1 ; CHECK: br i1 -; CHECK: call void @bar.1_ +; CHECK: call void @bar.1. ; LIMIT3-LABEL: @dummy_caller ; LIMIT3: br i1 ; LIMIT3: br i1 ; LIMIT3-NOT: br i1 -; LIMIT3: call void @bar.1_ +; LIMIT3: call void @bar.1. ; LIMIT2-LABEL: @dummy_caller ; LIMIT2-NOT: br i1 ; LIMIT2: call i32 @bar( diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlinePGOMultiRegion.ll b/llvm/test/Transforms/CodeExtractor/PartialInlinePGOMultiRegion.ll index a51bdd0..5d187ab 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlinePGOMultiRegion.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlinePGOMultiRegion.ll @@ -109,9 +109,9 @@ define signext i32 @foo(i32 signext %value, i32 signext %ub) #0 !prof !30 { ; CHECK-LABEL: @foo ; CHECK-NOT: call signext i32 @bar ; CHECK: codeRepl1.i: -; CHECK: call void @bar.1_if.then +; CHECK: call void @bar.1.if.then ; CHECK: codeRepl.i: -; CHECK: call void @bar.1_if.then2 +; CHECK: call void @bar.1.if.then2 entry: %value.addr = alloca i32, align 4 %ub.addr = alloca i32, align 4 @@ -123,11 +123,11 @@ entry: ret i32 %call } -; CHECK-LABEL: define internal void @bar.1_if.then2 +; CHECK-LABEL: define internal void @bar.1.if.then2 ; CHECK: .exitStub: ; CHECK: ret void -; CHECK-LABEL: define internal void @bar.1_if.then +; CHECK-LABEL: define internal void @bar.1.if.then ; CHECK: .exitStub: ; CHECK: ret void diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlinePGORegion.ll b/llvm/test/Transforms/CodeExtractor/PartialInlinePGORegion.ll index 27c858f..4aa7062 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlinePGORegion.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlinePGORegion.ll @@ -66,7 +66,7 @@ define signext i32 @foo(i32 signext %value, i32 signext %ub) #0 !prof !30 { ; CHECK-LABEL: @foo ; CHECK: codeRepl.i: ; CHECK-NOT: call signext i32 @bar -; CHECK: call void @bar.1_if.then +; CHECK: call void @bar.1.if.then entry: %value.addr = alloca i32, align 4 %ub.addr = alloca i32, align 4 @@ -78,7 +78,7 @@ entry: ret i32 %call } -; CHECK-LABEL: define internal void @bar.1_if.then +; CHECK-LABEL: define internal void @bar.1.if.then ; CHECK: .exitStub: ; CHECK: ret void diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineVarArg.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineVarArg.ll index bf6db27..8582f5e 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineVarArg.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineVarArg.ll @@ -36,7 +36,7 @@ bb: } ; CHECK-LABEL: @caller1 ; CHECK: codeRepl.i: -; CHECK-NEXT: call void (i32, i8**, i32, ...) @vararg.3_bb1(i32 %stat1.i, i8** %vargs.i, i32 %arg) +; CHECK-NEXT: call void (i32, i8**, i32, ...) @vararg.3.bb1(i32 %stat1.i, i8** %vargs.i, i32 %arg) define i32 @caller2(i32 %arg, float %arg2) { bb: @@ -46,7 +46,7 @@ bb: ; CHECK-LABEL: @caller2 ; CHECK: codeRepl.i: -; CHECK-NEXT: call void (i32, i8**, i32, ...) @vararg.3_bb1(i32 %stat1.i, i8** %vargs.i, i32 %arg, i32 10, float %arg2) +; CHECK-NEXT: call void (i32, i8**, i32, ...) @vararg.3.bb1(i32 %stat1.i, i8** %vargs.i, i32 %arg, i32 10, float %arg2) ; Test case to check that we do not extract a vararg function, if va_end is in ; a block that is not outlined. @@ -104,4 +104,4 @@ entry: ; CHECK-LABEL: @caller_with_signext ; CHECK: codeRepl.i: -; CHECK-NEXT: call void (i32*, ...) @vararg2.1_cond.end(i32* %foo, i32 signext 8) +; CHECK-NEXT: call void (i32*, ...) @vararg2.1.cond.end(i32* %foo, i32 signext 8) diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineVarArgsDebug.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineVarArgsDebug.ll index 1a3d3ee..02f695d 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineVarArgsDebug.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineVarArgsDebug.ll @@ -19,14 +19,14 @@ if.end: ; preds = %if.then, %entry ; CHECK-LABEL: @caller ; CHECK: codeRepl.i: -; CHECK-NEXT: call void (i32, i32*, ...) @callee.1_if.then(i32 %v, i32* %mul.loc.i, i32 99), !dbg ![[DBG2:[0-9]+]] +; CHECK-NEXT: call void (i32, i32*, ...) @callee.1.if.then(i32 %v, i32* %mul.loc.i, i32 99), !dbg ![[DBG2:[0-9]+]] define i32 @caller(i32 %v) !dbg !8 { entry: %call = call i32 (i32, ...) @callee(i32 %v, i32 99), !dbg !14 ret i32 %call, !dbg !15 } -; CHECK-LABEL: define internal void @callee.1_if.then +; CHECK-LABEL: define internal void @callee.1.if.then ; CHECK: br label %if.then, !dbg ![[DBG3:[0-9]+]] ; CHECK: ![[DBG1]] = !DILocation(line: 10, column: 7, diff --git a/llvm/test/Transforms/CodeExtractor/SingleCondition.ll b/llvm/test/Transforms/CodeExtractor/SingleCondition.ll index 4110cd9..3343644 100644 --- a/llvm/test/Transforms/CodeExtractor/SingleCondition.ll +++ b/llvm/test/Transforms/CodeExtractor/SingleCondition.ll @@ -16,7 +16,7 @@ define internal i32 @dummyCaller(i1 %cond, i32* align 2 %align.val) { entry: ; CHECK-LABEL: @dummyCaller ; CHECK: br -; CHECK: call void @inlinedFunc.1_ +; CHECK: call void @inlinedFunc.1. %val = call i32 @inlinedFunc(i1 %cond, i32* %align.val) ret i32 %val } diff --git a/llvm/test/Transforms/CodeExtractor/X86/InheritTargetAttributes.ll b/llvm/test/Transforms/CodeExtractor/X86/InheritTargetAttributes.ll index 0f8a719..e6a5113 100644 --- a/llvm/test/Transforms/CodeExtractor/X86/InheritTargetAttributes.ll +++ b/llvm/test/Transforms/CodeExtractor/X86/InheritTargetAttributes.ll @@ -36,5 +36,5 @@ entry: attributes #0 = { nounwind readnone } attributes #1 = { nounwind uwtable "target-cpu"="x86-64" "target-features"="+sse4.1" } -; CHECK: define {{.*}} @inlinedFunc.1_if.then{{.*}} [[COUNT1:#[0-9]+]] +; CHECK: define {{.*}} @inlinedFunc.1.if.then{{.*}} [[COUNT1:#[0-9]+]] ; CHECK: [[COUNT1]] = { {{.*}} "target-cpu"="x86-64" "target-features"="+sse4.1" } diff --git a/llvm/test/Transforms/CodeExtractor/cost.ll b/llvm/test/Transforms/CodeExtractor/cost.ll index 4ac5ace..841b42b 100644 --- a/llvm/test/Transforms/CodeExtractor/cost.ll +++ b/llvm/test/Transforms/CodeExtractor/cost.ll @@ -47,14 +47,14 @@ declare i32 @foo(i32* %arg) define i32 @dummy_caller(i32* %arg) local_unnamed_addr { ; CHECK-LABEL: @dummy_caller %tmp = call i32 @outline_region_notlikely(i32* %arg) -; CHECK: call void @outline_region_notlikely.2_bb1 +; CHECK: call void @outline_region_notlikely.2.bb1 %tmp2 = tail call i32 @outline_region_likely(i32* %arg) ; CHECK: %tmp2 = tail call i32 @outline_region_likely(i32* %arg) ret i32 %tmp } -; CHECK-LABEL: define internal void @outline_region_notlikely.2_bb1(i32* %arg) { +; CHECK-LABEL: define internal void @outline_region_notlikely.2.bb1(i32* %arg) { ; CHECK-NEXT: newFuncRoot: !llvm.module.flags = !{!0} diff --git a/llvm/test/Transforms/CodeExtractor/cost_meta.ll b/llvm/test/Transforms/CodeExtractor/cost_meta.ll index 2e4467a..ca1690a 100644 --- a/llvm/test/Transforms/CodeExtractor/cost_meta.ll +++ b/llvm/test/Transforms/CodeExtractor/cost_meta.ll @@ -28,7 +28,7 @@ define i32 @dummy_caller(i32* %arg) local_unnamed_addr { } -; CHECK-LABEL: define internal void @outline_region_notlikely.1_bb1(i32* %arg) { +; CHECK-LABEL: define internal void @outline_region_notlikely.1.bb1(i32* %arg) { ; CHECK-NEXT: newFuncRoot: declare i32 @foo(i32 * %arg) diff --git a/llvm/test/Transforms/CodeExtractor/inline_eh.ll b/llvm/test/Transforms/CodeExtractor/inline_eh.ll index 4e0aa7a..a69e0c3 100644 --- a/llvm/test/Transforms/CodeExtractor/inline_eh.ll +++ b/llvm/test/Transforms/CodeExtractor/inline_eh.ll @@ -42,11 +42,11 @@ entry: ; CHECK: entry: ; CHECK-NEXT: br i1 ; CHECK: codeRepl.i: -; CHECK-NEXT: call void @callee.1_{{.*}}() +; CHECK-NEXT: call void @callee.1.{{.*}}() call void @callee(i1 %cond) ret void } -; CHECK-LABEL: define {{.*}} @callee.1_{{.*}}() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) +; CHECK-LABEL: define {{.*}} @callee.1.{{.*}}() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) ; CHECK: invoke void @bar() ; CHECK: landingpad diff --git a/llvm/test/Transforms/CodeExtractor/inline_eh_1.ll b/llvm/test/Transforms/CodeExtractor/inline_eh_1.ll index 31e3583..b01abb6 100644 --- a/llvm/test/Transforms/CodeExtractor/inline_eh_1.ll +++ b/llvm/test/Transforms/CodeExtractor/inline_eh_1.ll @@ -42,12 +42,12 @@ entry: ; CHECK: entry: ; CHECK-NEXT: br i1 ; CHECK: codeRepl.i: -; CHECK-NEXT: call void @callee.1_{{.*}}() +; CHECK-NEXT: call void @callee.1.{{.*}}() call void @callee(i1 %cond) ret void } -; CHECK-LABEL: define {{.*}} @callee.1_{{.*}}() personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) +; CHECK-LABEL: define {{.*}} @callee.1.{{.*}}() personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) ; CHECK: invoke void @bar() ; CHECK: cleanuppad ; CHECK-NEXT: cleanupret diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink.ll b/llvm/test/Transforms/CodeExtractor/live_shrink.ll index c25ed2b..780ab48 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink.ll @@ -41,13 +41,13 @@ bb: ; CHECK-NOT: llvm.lifetime ; CHECK: br i1 ; CHECK: codeRepl.i: -; CHECK: call void @_Z3foov.1_ +; CHECK: call void @_Z3foov.1. tail call void @_Z3foov() ret void } -; CHECK-LABEL: define internal void @_Z3foov.1_ +; CHECK-LABEL: define internal void @_Z3foov.1. ; CHECK: newFuncRoot: ; CHECK-NEXT: %tmp = alloca %class.A ; CHECK-NEXT: %tmp1 = bitcast %class.A* %tmp to i8* diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll index ac6aa4f..aed86f8 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll @@ -42,12 +42,12 @@ bb: ; CHECK-NOT: llvm.lifetime ; CHECK: br i1 ; CHECK: codeRepl.i: -; CHECK: call void @_Z3foov.1_ +; CHECK: call void @_Z3foov.1. tail call void @_Z3foov() ret void } -; CHECK-LABEL: define internal void @_Z3foov.1_ +; CHECK-LABEL: define internal void @_Z3foov.1. ; CHECK: newFuncRoot: ; CHECK-NEXT: %tmp = alloca %class.A ; CHECK-NEXT: %tmp1 = getelementptr diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll index 1f57146..13dab8d 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll @@ -50,7 +50,7 @@ bb: ret void } -; CHECK-LABEL: define internal void @_Z3foov.1_ +; CHECK-LABEL: define internal void @_Z3foov.1. ; CHECK: bb9: ; CHECK: call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %tmp1) ; CHECK: br label %.exitStub diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll index 8d9045c..9350ca2 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll @@ -42,7 +42,7 @@ bb: ret void } -; CHECK-LABEL: define internal void @_Z3foov.1_ +; CHECK-LABEL: define internal void @_Z3foov.1. ; CHECK: newFuncRoot: ; CHECK-NEXT: alloca ; CHECK-NEXT: bitcast diff --git a/llvm/test/Transforms/CodeExtractor/unreachable-block.ll b/llvm/test/Transforms/CodeExtractor/unreachable-block.ll index 09f41f6..7ce65f5 100644 --- a/llvm/test/Transforms/CodeExtractor/unreachable-block.ll +++ b/llvm/test/Transforms/CodeExtractor/unreachable-block.ll @@ -1,12 +1,12 @@ ; RUN: opt -S -partial-inliner %s | FileCheck %s ; CHECK-LABEL: define void @dipsy( -; CHECK-NEXT: call void @tinkywinky.1_ontrue() +; CHECK-NEXT: call void @tinkywinky.1.ontrue() ; CHECK-NEXT: call void @patatuccio() ; CHECK-NEXT: ret void ; CHECK-NEXT: } -; CHECK-LABEL: define internal void @tinkywinky.1_ontrue() { +; CHECK-LABEL: define internal void @tinkywinky.1.ontrue() { ; CHECK-NEXT: newFuncRoot: ; CHECK-NEXT: br label %ontrue ; CHECK: onfalse{{.*}}: diff --git a/llvm/test/Transforms/HotColdSplit/minsize.ll b/llvm/test/Transforms/HotColdSplit/minsize.ll index f7509bf..4865fb6 100644 --- a/llvm/test/Transforms/HotColdSplit/minsize.ll +++ b/llvm/test/Transforms/HotColdSplit/minsize.ll @@ -2,7 +2,7 @@ ; CHECK-LABEL: @fun ; CHECK: codeRepl: -; CHECK-NEXT: call void @fun_if.else +; CHECK-NEXT: call void @fun.cold.1 define void @fun() { entry: @@ -28,5 +28,5 @@ cleanup: unreachable } -; CHECK: define {{.*}} @fun_if.else{{.*}}#[[outlined_func_attr:[0-9]+]] +; CHECK: define {{.*}} @fun.cold.1{{.*}}#[[outlined_func_attr:[0-9]+]] ; CHECK: attributes #[[outlined_func_attr]] = { {{.*}}minsize diff --git a/llvm/test/Transforms/HotColdSplit/split-cold-2.ll b/llvm/test/Transforms/HotColdSplit/split-cold-2.ll index de0c765..ac7d856 100644 --- a/llvm/test/Transforms/HotColdSplit/split-cold-2.ll +++ b/llvm/test/Transforms/HotColdSplit/split-cold-2.ll @@ -4,10 +4,10 @@ ; Make sure this compiles. This test used to fail with an invalid phi node: the ; two predecessors were outlined and the SSA representation was invalid. -; CHECK: remark: :0:0: fun split cold code into fun_if.else +; CHECK: remark: :0:0: fun split cold code into fun.cold.1 ; CHECK-LABEL: @fun ; CHECK: codeRepl: -; CHECK-NEXT: call void @fun_if.else +; CHECK-NEXT: call void @fun.cold.1 define void @fun() { entry: diff --git a/llvm/test/Transforms/HotColdSplit/split-out-dbg-val-of-arg.ll b/llvm/test/Transforms/HotColdSplit/split-out-dbg-val-of-arg.ll index dcaff12..459ee67 100644 --- a/llvm/test/Transforms/HotColdSplit/split-out-dbg-val-of-arg.ll +++ b/llvm/test/Transforms/HotColdSplit/split-out-dbg-val-of-arg.ll @@ -1,6 +1,6 @@ ; RUN: opt -hotcoldsplit -S < %s | FileCheck %s -; CHECK-LABEL: define {{.*}}@foo_if.end +; CHECK-LABEL: define {{.*}}@foo.cold ; CHECK-NOT: llvm.dbg.value define void @foo(i32 %arg1) !dbg !6 { diff --git a/llvm/test/tools/llvm-extract/extract-block.ll b/llvm/test/tools/llvm-extract/extract-block.ll index c812a56..7cf0f16 100644 --- a/llvm/test/tools/llvm-extract/extract-block.ll +++ b/llvm/test/tools/llvm-extract/extract-block.ll @@ -12,7 +12,7 @@ bb: ret void } -; CHECK: @foo_bb4 +; CHECK: @foo.bb4 ; CHECK: call void @bar() ; CHECK: %tmp5 define i32 @foo(i32 %arg) { diff --git a/llvm/test/tools/llvm-extract/extract-multiple-blocks.ll b/llvm/test/tools/llvm-extract/extract-multiple-blocks.ll index a7f270b..343edff 100644 --- a/llvm/test/tools/llvm-extract/extract-multiple-blocks.ll +++ b/llvm/test/tools/llvm-extract/extract-multiple-blocks.ll @@ -1,7 +1,7 @@ ; RUN: llvm-extract -S -bb foo:bb4 -bb foo:bb7 %s | FileCheck %s -; CHECK: @foo_bb4 -; CHECK: @foo_bb7 +; CHECK: @foo.bb4 +; CHECK: @foo.bb7 define i32 @foo(i32 %arg) { bb: %tmp = alloca i32, align 4 -- 2.7.4