Index: lib/Transforms/IPO/SampleProfile.cpp =================================================================== --- lib/Transforms/IPO/SampleProfile.cpp +++ lib/Transforms/IPO/SampleProfile.cpp @@ -1275,6 +1275,7 @@ clearFunctionData(); retval |= runOnFunction(F); } + M.setProfileSummary(Reader->getSummary().getMD(M.getContext())); return retval; } Index: test/Transforms/SampleProfile/Inputs/summary.prof =================================================================== --- /dev/null +++ test/Transforms/SampleProfile/Inputs/summary.prof @@ -0,0 +1,4 @@ +bar:100:3 + 1: 100 +foo:200:1 + 1: 200 Index: test/Transforms/SampleProfile/summary.ll =================================================================== --- /dev/null +++ test/Transforms/SampleProfile/summary.ll @@ -0,0 +1,14 @@ +; Test that we annotate entire program's summary to IR. +; RUN: opt < %s -sample-profile -sample-profile-file=%S/Inputs/summary.prof -S | FileCheck %s + +define i32 @bar() #0 !dbg !1 { +entry: + ret i32 1, !dbg !2 +} + +; CHECK-DAG: {{![0-9]+}} = !{i32 1, !"ProfileSummary", {{![0-9]+}}} +; CHECK-DAG: {{![0-9]+}} = !{!"NumFunctions", i64 2} +; CHECK-DAG: {{![0-9]+}} = !{!"MaxFunctionCount", i64 3} + +!1 = distinct !DISubprogram(name: "bar") +!2 = !DILocation(line: 2, scope: !2)