diff options
| -rw-r--r-- | llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | 11 | ||||
| -rw-r--r-- | llvm/test/Bitcode/thinlto-function-summary.ll | 5 | ||||
| -rw-r--r-- | llvm/test/Transforms/FunctionImport/funcimport.ll | 12 |
3 files changed, 9 insertions, 19 deletions
diff --git a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp index 5a13149c022..fe318548b64 100644 --- a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp +++ b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp @@ -256,15 +256,10 @@ static void computeFunctionSummary(ModuleSummaryIndex &Index, const Module &M, std::vector<const Instruction *> NonVolatileLoads; bool HasInlineAsmMaybeReferencingInternal = false; - bool InitsVarArgs = false; for (const BasicBlock &BB : F) for (const Instruction &I : BB) { if (isa<DbgInfoIntrinsic>(I)) continue; - if (const IntrinsicInst *II = dyn_cast<IntrinsicInst>(&I)) { - if (II->getIntrinsicID() == Intrinsic::vastart) - InitsVarArgs = true; - } ++NumInsts; if (isNonVolatileLoad(&I)) { // Postpone processing of non-volatile load instructions @@ -397,11 +392,9 @@ static void computeFunctionSummary(ModuleSummaryIndex &Index, const Module &M, F.hasFnAttribute(Attribute::ReadNone), F.hasFnAttribute(Attribute::ReadOnly), F.hasFnAttribute(Attribute::NoRecurse), F.returnDoesNotAlias(), - // Inliner doesn't handle variadic functions with va_start calls. // FIXME: refactor this to use the same code that inliner is using. - InitsVarArgs || - // Don't try to import functions with noinline attribute. - F.getAttributes().hasFnAttribute(Attribute::NoInline)}; + // Don't try to import functions with noinline attribute. + F.getAttributes().hasFnAttribute(Attribute::NoInline)}; auto FuncSummary = llvm::make_unique<FunctionSummary>( Flags, NumInsts, FunFlags, std::move(Refs), CallGraphEdges.takeVector(), TypeTests.takeVector(), TypeTestAssumeVCalls.takeVector(), diff --git a/llvm/test/Bitcode/thinlto-function-summary.ll b/llvm/test/Bitcode/thinlto-function-summary.ll index 8563d127ff6..be7e9749086 100644 --- a/llvm/test/Bitcode/thinlto-function-summary.ll +++ b/llvm/test/Bitcode/thinlto-function-summary.ll @@ -22,10 +22,7 @@ ; BC-NEXT: <PERMODULE {{.*}} op0=1 op1=0 ; BC-NEXT: <PERMODULE {{.*}} op0=2 op1=0 ; BC-NEXT: <PERMODULE {{.*}} op0=3 op1=7 -; Summary for @variadic has flags (op3) = 16 since non-inlinable owing to -; va_start call. -; flag is set due to va_start call. -; BC-NEXT: <PERMODULE {{.*}} op0=4 op1=0 op2=4 op3=16 +; BC-NEXT: <PERMODULE {{.*}} op0=4 op1=0 op2=4 op3=0 ; BC-NEXT: <ALIAS {{.*}} op0=6 op1=0 op2=3 ; BC-NEXT: </GLOBALVAL_SUMMARY_BLOCK ; BC: <STRTAB_BLOCK diff --git a/llvm/test/Transforms/FunctionImport/funcimport.ll b/llvm/test/Transforms/FunctionImport/funcimport.ll index b905549300a..0d09d94a0fc 100644 --- a/llvm/test/Transforms/FunctionImport/funcimport.ll +++ b/llvm/test/Transforms/FunctionImport/funcimport.ll @@ -110,13 +110,13 @@ declare void @linkoncefunc2(...) #1 ; CHECK-DAG: define available_externally void @variadic_no_va_start(...) !thinlto_src_module !0 { declare void @variadic_no_va_start(...) -; We shouldn't import variadic functions without a va_start, since the inliner -; cannot handle them. -; CHECK-DAG: declare void @variadic_va_start(...) +; We can import variadic functions with a va_start, since the inliner +; can sometimes handle them. +; CHECK-DAG: define available_externally void @variadic_va_start(...) declare void @variadic_va_start(...) ; INSTLIMDEF-DAG: Import globalfunc2 -; INSTLIMDEF-DAG: 14 function-import - Number of functions imported +; INSTLIMDEF-DAG: 15 function-import - Number of functions imported ; INSTLIMDEF-DAG: 4 function-import - Number of global variables imported ; CHECK-DAG: !0 = !{!"{{.*}}/Inputs/funcimport.ll"} @@ -156,7 +156,7 @@ declare void @variadic_va_start(...) ; GUID-DAG: GUID {{.*}} is linkoncefunc ; DUMP: Module [[M1:.*]] imports from 1 module -; DUMP-NEXT: 14 functions imported from [[M2:.*]] +; DUMP-NEXT: 15 functions imported from [[M2:.*]] ; DUMP-NEXT: 4 vars imported from [[M2]] -; DUMP: Imported 14 functions for Module [[M1]] +; DUMP: Imported 15 functions for Module [[M1]] ; DUMP-NEXT: Imported 4 global variables for Module [[M1]] |

