Currently we have pgo options defined in PassManagerBuilder.cpp only for instrument pgo, but not for sample pgo. We also have pgo options defined in NewPMDriver.cpp in opt only for new pass manager and for all kinds of pgo. They have some inconsistency. To make the options more consistent and make tests writing easier, the patch let old pass manager to share the same pgo options with new pass manager in opt, and removes the options in PassManagerBuilder.cpp. Differential Revision: https://reviews.llvm.org/D56749 llvm-svn: 351392
24 lines
831 B
LLVM
24 lines
831 B
LLVM
; RUN: opt < %s -O2 -pgo-kind=pgo-instr-gen-pipeline -S | FileCheck %s --check-prefix=GEN
|
|
; RUN: opt < %s -O2 -pgo-kind=pgo-instr-gen-pipeline -profile-file=default.profraw -S | FileCheck %s --check-prefix=GEN
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
define i32 @foo(i32 %i) {
|
|
entry:
|
|
; GEN: %pgocount = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc_foo
|
|
; GEN-NOT: %pgocount.i = load i64, i64* getelementptr inbounds ([1 x i64], [1 x i64]* @__profc__stdin__bar
|
|
%call = call i32 @bar()
|
|
%add = add nsw i32 %i, %call
|
|
ret i32 %add
|
|
}
|
|
|
|
define internal i32 @bar() {
|
|
; check that bar is inlined into foo and eliminiated from IR.
|
|
; GEN-NOT: define internal i32 @bar
|
|
entry:
|
|
%call = call i32 (...) @bar1()
|
|
ret i32 %call
|
|
}
|
|
|
|
declare i32 @bar1(...)
|