[llvm] aeca47f - ThinLTO: Fix assembler to emit alwaysInline in the summary

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 18 15:02:31 PST 2019


Author: Teresa Johnson
Date: 2019-11-18T15:02:13-08:00
New Revision: aeca47fa0fbc36a43bced6a482a2e61acc3162a1

URL: https://github.com/llvm/llvm-project/commit/aeca47fa0fbc36a43bced6a482a2e61acc3162a1
DIFF: https://github.com/llvm/llvm-project/commit/aeca47fa0fbc36a43bced6a482a2e61acc3162a1.diff

LOG: ThinLTO: Fix assembler to emit alwaysInline in the summary

Summary: The earlier commit (https://reviews.llvm.org/D70014) missed this one : If Always_Inline happens to be the only entry in FuncFlags, then the assembler will not print it in the summary.

Patch by Bharathi Seshadri <bseshadr at cisco.com>

Reviewers: tejohnson

Reviewed By: tejohnson

Subscribers: mehdi_amini, inglorion, hiraditya, steven_wu, dexonsmith, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D70323

Added: 
    

Modified: 
    llvm/lib/IR/AsmWriter.cpp
    llvm/test/ThinLTO/X86/funcimport_alwaysinline.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp
index 5ee0d52fe995..01989b97f7fa 100644
--- a/llvm/lib/IR/AsmWriter.cpp
+++ b/llvm/lib/IR/AsmWriter.cpp
@@ -2955,7 +2955,7 @@ void AssemblyWriter::printFunctionSummary(const FunctionSummary *FS) {
 
   FunctionSummary::FFlags FFlags = FS->fflags();
   if (FFlags.ReadNone | FFlags.ReadOnly | FFlags.NoRecurse |
-      FFlags.ReturnDoesNotAlias | FFlags.NoInline) {
+      FFlags.ReturnDoesNotAlias | FFlags.NoInline | FFlags.AlwaysInline) {
     Out << ", funcFlags: (";
     Out << "readNone: " << FFlags.ReadNone;
     Out << ", readOnly: " << FFlags.ReadOnly;

diff  --git a/llvm/test/ThinLTO/X86/funcimport_alwaysinline.ll b/llvm/test/ThinLTO/X86/funcimport_alwaysinline.ll
index 38e63b25af17..aa4947602f78 100644
--- a/llvm/test/ThinLTO/X86/funcimport_alwaysinline.ll
+++ b/llvm/test/ThinLTO/X86/funcimport_alwaysinline.ll
@@ -6,11 +6,12 @@
 ; RUN:     -r=%t2.bc,main,plx \
 ; RUN:     -r=%t2.bc,foo,l \
 ; RUN:     -import-instr-limit=0
-; RUN: llvm-dis %t.o.2.3.import.bc -o - | FileCheck %s
+; RUN: llvm-dis %t.o.2.3.import.bc -o - | FileCheck %s --check-prefix=CHECK1
+; RUN: llvm-dis %t.o.index.bc -o - | FileCheck %s --check-prefix=CHECK2
 
 ; foo() being always_inline should be imported irrespective of the
 ; instruction limit
-; CHECK: define available_externally dso_local void @foo()
+; CHECK1: define available_externally dso_local void @foo()
 
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
@@ -22,3 +23,4 @@ entry:
 }
 
 attributes #0 = { alwaysinline nounwind uwtable }
+; CHECK2: ^2 = gv: (guid: {{.*}}, summaries: (function: (module: ^0, flags: (linkage: external, notEligibleToImport: 0, live: 1, dsoLocal: 1, canAutoHide: 0), insts: 1, funcFlags: (readNone: 0, readOnly: 0, noRecurse: 0, returnDoesNotAlias: 0, noInline: 0, alwaysInline: 1))))


        


More information about the llvm-commits mailing list