forked from OSchip/llvm-project
PGO: Change runtime prefix from pgo to profile
These functions are in the profile runtime. PGO comes later. Unfortunately, there's only room for 16 characters in a Darwin section, so use __llvm_prf_ instead of __llvm_profile_ for section names. <rdar://problem/15943240> llvm-svn: 204390
This commit is contained in:
parent
6dab520c70
commit
a7807637bf
|
@ -178,7 +178,7 @@ void CodeGenPGO::setFuncName(llvm::Function *Fn) {
|
|||
}
|
||||
|
||||
static llvm::Function *getRegisterFunc(CodeGenModule &CGM) {
|
||||
return CGM.getModule().getFunction("__llvm_pgo_register_functions");
|
||||
return CGM.getModule().getFunction("__llvm_profile_register_functions");
|
||||
}
|
||||
|
||||
static llvm::BasicBlock *getOrInsertRegisterBB(CodeGenModule &CGM) {
|
||||
|
@ -195,7 +195,7 @@ static llvm::BasicBlock *getOrInsertRegisterBB(CodeGenModule &CGM) {
|
|||
auto *RegisterFTy = llvm::FunctionType::get(VoidTy, false);
|
||||
auto *RegisterF = llvm::Function::Create(RegisterFTy,
|
||||
llvm::GlobalValue::InternalLinkage,
|
||||
"__llvm_pgo_register_functions",
|
||||
"__llvm_profile_register_functions",
|
||||
&CGM.getModule());
|
||||
RegisterF->setUnnamedAddr(true);
|
||||
if (CGM.getCodeGenOpts().DisableRedZone)
|
||||
|
@ -212,7 +212,7 @@ static llvm::Constant *getOrInsertRuntimeRegister(CodeGenModule &CGM) {
|
|||
auto *VoidTy = llvm::Type::getVoidTy(CGM.getLLVMContext());
|
||||
auto *VoidPtrTy = llvm::Type::getInt8PtrTy(CGM.getLLVMContext());
|
||||
auto *RuntimeRegisterTy = llvm::FunctionType::get(VoidTy, VoidPtrTy, false);
|
||||
return CGM.getModule().getOrInsertFunction("__llvm_pgo_register_function",
|
||||
return CGM.getModule().getOrInsertFunction("__llvm_profile_register_function",
|
||||
RuntimeRegisterTy);
|
||||
}
|
||||
|
||||
|
@ -221,15 +221,15 @@ static bool isMachO(const CodeGenModule &CGM) {
|
|||
}
|
||||
|
||||
static StringRef getCountersSection(const CodeGenModule &CGM) {
|
||||
return isMachO(CGM) ? "__DATA,__llvm_pgo_cnts" : "__llvm_pgo_cnts";
|
||||
return isMachO(CGM) ? "__DATA,__llvm_prf_cnts" : "__llvm_prf_cnts";
|
||||
}
|
||||
|
||||
static StringRef getNameSection(const CodeGenModule &CGM) {
|
||||
return isMachO(CGM) ? "__DATA,__llvm_pgo_names" : "__llvm_pgo_names";
|
||||
return isMachO(CGM) ? "__DATA,__llvm_prf_names" : "__llvm_prf_names";
|
||||
}
|
||||
|
||||
static StringRef getDataSection(const CodeGenModule &CGM) {
|
||||
return isMachO(CGM) ? "__DATA,__llvm_pgo_data" : "__llvm_pgo_data";
|
||||
return isMachO(CGM) ? "__DATA,__llvm_prf_data" : "__llvm_prf_data";
|
||||
}
|
||||
|
||||
llvm::GlobalVariable *CodeGenPGO::buildDataVar() {
|
||||
|
@ -295,7 +295,7 @@ llvm::Function *CodeGenPGO::emitInitialization(CodeGenModule &CGM) {
|
|||
return nullptr;
|
||||
|
||||
// Only need to create this once per module.
|
||||
if (CGM.getModule().getFunction("__llvm_pgo_init"))
|
||||
if (CGM.getModule().getFunction("__llvm_profile_init"))
|
||||
return nullptr;
|
||||
|
||||
// Get the function to call at initialization.
|
||||
|
@ -307,7 +307,7 @@ llvm::Function *CodeGenPGO::emitInitialization(CodeGenModule &CGM) {
|
|||
auto *VoidTy = llvm::Type::getVoidTy(CGM.getLLVMContext());
|
||||
auto *F = llvm::Function::Create(llvm::FunctionType::get(VoidTy, false),
|
||||
llvm::GlobalValue::InternalLinkage,
|
||||
"__llvm_pgo_init", &CGM.getModule());
|
||||
"__llvm_profile_init", &CGM.getModule());
|
||||
F->setUnnamedAddr(true);
|
||||
F->addFnAttr(llvm::Attribute::NoInline);
|
||||
if (CGM.getCodeGenOpts().DisableRedZone)
|
||||
|
|
|
@ -83,7 +83,7 @@ public:
|
|||
/// For functions with local linkage, this includes the main file name.
|
||||
StringRef getFuncName() const { return StringRef(*PrefixedFuncName); }
|
||||
std::string getFuncVarName(StringRef VarName) const {
|
||||
return ("__llvm_pgo_" + VarName + "_" + RawFuncName).str();
|
||||
return ("__llvm_profile_" + VarName + "_" + RawFuncName).str();
|
||||
}
|
||||
|
||||
/// Return the counter value of the current region.
|
||||
|
|
|
@ -329,7 +329,7 @@ void DarwinClang::AddLinkRuntimeLibArgs(const ArgList &Args,
|
|||
// there are no calls to the runtime in the code.
|
||||
if (Args.hasArg(options::OPT_fprofile_instr_generate)) {
|
||||
CmdArgs.push_back("-u");
|
||||
CmdArgs.push_back("___llvm_pgo_runtime");
|
||||
CmdArgs.push_back("___llvm_profile_runtime");
|
||||
}
|
||||
|
||||
// Select the appropriate runtime library for the target.
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-general.c %s -o - -emit-llvm -fprofile-instr-generate | FileCheck -check-prefix=PGOGEN %s
|
||||
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-general.c %s -o - -emit-llvm -fprofile-instr-use=%S/Inputs/c-general.profdata | FileCheck -check-prefix=PGOUSE %s
|
||||
|
||||
// PGOGEN: @[[SLC:__llvm_pgo_counters_simple_loops]] = global [4 x i64] zeroinitializer
|
||||
// PGOGEN: @[[IFC:__llvm_pgo_counters_conditionals]] = global [11 x i64] zeroinitializer
|
||||
// PGOGEN: @[[EEC:__llvm_pgo_counters_early_exits]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN: @[[JMC:__llvm_pgo_counters_jumps]] = global [22 x i64] zeroinitializer
|
||||
// PGOGEN: @[[SWC:__llvm_pgo_counters_switches]] = global [19 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BSC:__llvm_pgo_counters_big_switch]] = global [17 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BOC:__llvm_pgo_counters_boolean_operators]] = global [8 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BLC:__llvm_pgo_counters_boolop_loops]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN: @[[MAC:__llvm_pgo_counters_main]] = global [1 x i64] zeroinitializer
|
||||
// PGOGEN: @[[STC:__llvm_pgo_counters_static_func]] = internal global [2 x i64] zeroinitializer
|
||||
// PGOGEN: @[[SLC:__llvm_profile_counters_simple_loops]] = global [4 x i64] zeroinitializer
|
||||
// PGOGEN: @[[IFC:__llvm_profile_counters_conditionals]] = global [11 x i64] zeroinitializer
|
||||
// PGOGEN: @[[EEC:__llvm_profile_counters_early_exits]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN: @[[JMC:__llvm_profile_counters_jumps]] = global [22 x i64] zeroinitializer
|
||||
// PGOGEN: @[[SWC:__llvm_profile_counters_switches]] = global [19 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BSC:__llvm_profile_counters_big_switch]] = global [17 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BOC:__llvm_profile_counters_boolean_operators]] = global [8 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BLC:__llvm_profile_counters_boolop_loops]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN: @[[MAC:__llvm_profile_counters_main]] = global [1 x i64] zeroinitializer
|
||||
// PGOGEN: @[[STC:__llvm_profile_counters_static_func]] = internal global [2 x i64] zeroinitializer
|
||||
|
||||
// PGOGEN-LABEL: @simple_loops()
|
||||
// PGOUSE-LABEL: @simple_loops()
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
// Check the data structures emitted by instrumentation.
|
||||
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-linkage.c %s -o - -emit-llvm -fprofile-instr-generate | FileCheck %s
|
||||
|
||||
// CHECK: @__llvm_pgo_counters_foo = global [1 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name_foo = constant [3 x i8] c"foo", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data_foo = constant { i32, i32, i64, i8*, i64* } { i32 3, i32 1, i64 1, i8* getelementptr inbounds ([3 x i8]* @__llvm_pgo_name_foo, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_pgo_counters_foo, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters_foo = global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name_foo = constant [3 x i8] c"foo", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data_foo = constant { i32, i32, i64, i8*, i64* } { i32 3, i32 1, i64 1, i8* getelementptr inbounds ([3 x i8]* @__llvm_profile_name_foo, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_profile_counters_foo, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
void foo(void) { }
|
||||
|
||||
// CHECK: @__llvm_pgo_counters_foo_weak = weak global [5 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name_foo_weak = weak constant [8 x i8] c"foo_weak", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data_foo_weak = weak constant { i32, i32, i64, i8*, i64* } { i32 8, i32 5, i64 5, i8* getelementptr inbounds ([8 x i8]* @__llvm_pgo_name_foo_weak, i32 0, i32 0), i64* getelementptr inbounds ([5 x i64]* @__llvm_pgo_counters_foo_weak, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters_foo_weak = weak global [5 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name_foo_weak = weak constant [8 x i8] c"foo_weak", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data_foo_weak = weak constant { i32, i32, i64, i8*, i64* } { i32 8, i32 5, i64 5, i8* getelementptr inbounds ([8 x i8]* @__llvm_profile_name_foo_weak, i32 0, i32 0), i64* getelementptr inbounds ([5 x i64]* @__llvm_profile_counters_foo_weak, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
void foo_weak(void) __attribute__((weak));
|
||||
void foo_weak(void) { if (0){} if (0){} if (0){} if (0){} }
|
||||
|
||||
// CHECK: @__llvm_pgo_counters_main = global [1 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name_main = constant [4 x i8] c"main", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data_main = constant { i32, i32, i64, i8*, i64* } { i32 4, i32 1, i64 1, i8* getelementptr inbounds ([4 x i8]* @__llvm_pgo_name_main, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_pgo_counters_main, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters_main = global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name_main = constant [4 x i8] c"main", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data_main = constant { i32, i32, i64, i8*, i64* } { i32 4, i32 1, i64 1, i8* getelementptr inbounds ([4 x i8]* @__llvm_profile_name_main, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_profile_counters_main, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
static void foo_internal(void);
|
||||
int main(void) {
|
||||
foo();
|
||||
|
@ -23,9 +23,9 @@ int main(void) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// CHECK: @__llvm_pgo_counters_foo_internal = internal global [3 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name_foo_internal = internal constant [24 x i8] c"c-linkage.c:foo_internal", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data_foo_internal = internal constant { i32, i32, i64, i8*, i64* } { i32 24, i32 3, i64 3, i8* getelementptr inbounds ([24 x i8]* @__llvm_pgo_name_foo_internal, i32 0, i32 0), i64* getelementptr inbounds ([3 x i64]* @__llvm_pgo_counters_foo_internal, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters_foo_internal = internal global [3 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name_foo_internal = internal constant [24 x i8] c"c-linkage.c:foo_internal", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data_foo_internal = internal constant { i32, i32, i64, i8*, i64* } { i32 24, i32 3, i64 3, i8* getelementptr inbounds ([24 x i8]* @__llvm_profile_name_foo_internal, i32 0, i32 0), i64* getelementptr inbounds ([3 x i64]* @__llvm_profile_counters_foo_internal, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
static void foo_internal(void) { if (0){} if (0){} }
|
||||
|
||||
// CHECK: @llvm.used = appending global [4 x i8*] [i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data_foo to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data_foo_weak to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data_main to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data_foo_internal to i8*)], section "llvm.metadata"
|
||||
// CHECK: @llvm.used = appending global [4 x i8*] [i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data_foo to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data_foo_weak to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data_main to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data_foo_internal to i8*)], section "llvm.metadata"
|
||||
|
|
|
@ -17,7 +17,7 @@ class Simple {
|
|||
public:
|
||||
// CTRGEN-LABEL: define {{.*}} @_ZN6SimpleC2Ei(
|
||||
// CTRUSE-LABEL: define {{.*}} @_ZN6SimpleC2Ei(
|
||||
// CTRGEN: store {{.*}} @[[SCC:__llvm_pgo_counters__ZN6SimpleC2Ei]], i64 0, i64 0
|
||||
// CTRGEN: store {{.*}} @[[SCC:__llvm_profile_counters__ZN6SimpleC2Ei]], i64 0, i64 0
|
||||
explicit Simple(int Member) : Member(Member) {
|
||||
// CTRGEN: store {{.*}} @[[SCC]], i64 0, i64 1
|
||||
// CTRUSE: br {{.*}} !prof ![[SC1:[0-9]+]]
|
||||
|
@ -30,7 +30,7 @@ public:
|
|||
|
||||
// DTRGEN-LABEL: define {{.*}} @_ZN6SimpleD2Ev(
|
||||
// DTRUSE-LABEL: define {{.*}} @_ZN6SimpleD2Ev(
|
||||
// DTRGEN: store {{.*}} @[[SDC:__llvm_pgo_counters__ZN6SimpleD2Ev]], i64 0, i64 0
|
||||
// DTRGEN: store {{.*}} @[[SDC:__llvm_profile_counters__ZN6SimpleD2Ev]], i64 0, i64 0
|
||||
~Simple() {
|
||||
// DTRGEN: store {{.*}} @[[SDC]], i64 0, i64 1
|
||||
// DTRUSE: br {{.*}} !prof ![[SD1:[0-9]+]]
|
||||
|
@ -43,7 +43,7 @@ public:
|
|||
|
||||
// MTHGEN-LABEL: define {{.*}} @_ZN6Simple6methodEv(
|
||||
// MTHUSE-LABEL: define {{.*}} @_ZN6Simple6methodEv(
|
||||
// MTHGEN: store {{.*}} @[[SMC:__llvm_pgo_counters__ZN6Simple6methodEv]], i64 0, i64 0
|
||||
// MTHGEN: store {{.*}} @[[SMC:__llvm_profile_counters__ZN6Simple6methodEv]], i64 0, i64 0
|
||||
void method() {
|
||||
// MTHGEN: store {{.*}} @[[SMC]], i64 0, i64 1
|
||||
// MTHUSE: br {{.*}} !prof ![[SM1:[0-9]+]]
|
||||
|
@ -57,7 +57,7 @@ public:
|
|||
|
||||
// WRPGEN-LABEL: define {{.*}} @_Z14simple_wrapperv(
|
||||
// WRPUSE-LABEL: define {{.*}} @_Z14simple_wrapperv(
|
||||
// WRPGEN: store {{.*}} @[[SWC:__llvm_pgo_counters__Z14simple_wrapperv]], i64 0, i64 0
|
||||
// WRPGEN: store {{.*}} @[[SWC:__llvm_profile_counters__Z14simple_wrapperv]], i64 0, i64 0
|
||||
void simple_wrapper() {
|
||||
// WRPGEN: store {{.*}} @[[SWC]], i64 0, i64 1
|
||||
// WRPUSE: br {{.*}} !prof ![[SW1:[0-9]+]]
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9.0 -emit-llvm -main-file-name cxx-linkage.cpp %s -o - -fprofile-instr-generate | FileCheck %s
|
||||
|
||||
// CHECK: @__llvm_pgo_counters__Z3foov = global [1 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name__Z3foov = constant [7 x i8] c"_Z3foov", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data__Z3foov = constant { i32, i32, i64, i8*, i64* } { i32 7, i32 1, i64 1, i8* getelementptr inbounds ([7 x i8]* @__llvm_pgo_name__Z3foov, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_pgo_counters__Z3foov, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters__Z3foov = global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name__Z3foov = constant [7 x i8] c"_Z3foov", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data__Z3foov = constant { i32, i32, i64, i8*, i64* } { i32 7, i32 1, i64 1, i8* getelementptr inbounds ([7 x i8]* @__llvm_profile_name__Z3foov, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_profile_counters__Z3foov, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
void foo(void) { }
|
||||
|
||||
// CHECK: @__llvm_pgo_counters__Z8foo_weakv = weak global [5 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name__Z8foo_weakv = weak constant [12 x i8] c"_Z8foo_weakv", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data__Z8foo_weakv = weak constant { i32, i32, i64, i8*, i64* } { i32 12, i32 5, i64 5, i8* getelementptr inbounds ([12 x i8]* @__llvm_pgo_name__Z8foo_weakv, i32 0, i32 0), i64* getelementptr inbounds ([5 x i64]* @__llvm_pgo_counters__Z8foo_weakv, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters__Z8foo_weakv = weak global [5 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name__Z8foo_weakv = weak constant [12 x i8] c"_Z8foo_weakv", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data__Z8foo_weakv = weak constant { i32, i32, i64, i8*, i64* } { i32 12, i32 5, i64 5, i8* getelementptr inbounds ([12 x i8]* @__llvm_profile_name__Z8foo_weakv, i32 0, i32 0), i64* getelementptr inbounds ([5 x i64]* @__llvm_profile_counters__Z8foo_weakv, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
void foo_weak(void) __attribute__((weak));
|
||||
void foo_weak(void) { if (0){} if (0){} if (0){} if (0){} }
|
||||
|
||||
// CHECK: @__llvm_pgo_counters_main = global [1 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name_main = constant [4 x i8] c"main", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data_main = constant { i32, i32, i64, i8*, i64* } { i32 4, i32 1, i64 1, i8* getelementptr inbounds ([4 x i8]* @__llvm_pgo_name_main, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_pgo_counters_main, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters_main = global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name_main = constant [4 x i8] c"main", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data_main = constant { i32, i32, i64, i8*, i64* } { i32 4, i32 1, i64 1, i8* getelementptr inbounds ([4 x i8]* @__llvm_profile_name_main, i32 0, i32 0), i64* getelementptr inbounds ([1 x i64]* @__llvm_profile_counters_main, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
inline void foo_inline(void);
|
||||
int main(void) {
|
||||
foo();
|
||||
|
@ -22,9 +22,9 @@ int main(void) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
// CHECK: @__llvm_pgo_counters__Z10foo_inlinev = linkonce_odr global [7 x i64] zeroinitializer, section "__DATA,__llvm_pgo_cnts", align 8
|
||||
// CHECK: @__llvm_pgo_name__Z10foo_inlinev = linkonce_odr constant [15 x i8] c"_Z10foo_inlinev", section "__DATA,__llvm_pgo_names", align 1
|
||||
// CHECK: @__llvm_pgo_data__Z10foo_inlinev = linkonce_odr constant { i32, i32, i64, i8*, i64* } { i32 15, i32 7, i64 7, i8* getelementptr inbounds ([15 x i8]* @__llvm_pgo_name__Z10foo_inlinev, i32 0, i32 0), i64* getelementptr inbounds ([7 x i64]* @__llvm_pgo_counters__Z10foo_inlinev, i32 0, i32 0) }, section "__DATA,__llvm_pgo_data", align 8
|
||||
// CHECK: @__llvm_profile_counters__Z10foo_inlinev = linkonce_odr global [7 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
|
||||
// CHECK: @__llvm_profile_name__Z10foo_inlinev = linkonce_odr constant [15 x i8] c"_Z10foo_inlinev", section "__DATA,__llvm_prf_names", align 1
|
||||
// CHECK: @__llvm_profile_data__Z10foo_inlinev = linkonce_odr constant { i32, i32, i64, i8*, i64* } { i32 15, i32 7, i64 7, i8* getelementptr inbounds ([15 x i8]* @__llvm_profile_name__Z10foo_inlinev, i32 0, i32 0), i64* getelementptr inbounds ([7 x i64]* @__llvm_profile_counters__Z10foo_inlinev, i32 0, i32 0) }, section "__DATA,__llvm_prf_data", align 8
|
||||
inline void foo_inline(void) { if (0){} if (0){} if (0){} if (0){} if (0){} if (0){}}
|
||||
|
||||
// CHECK: @llvm.used = appending global [4 x i8*] [i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data__Z3foov to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data__Z8foo_weakv to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data_main to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_pgo_data__Z10foo_inlinev to i8*)], section "llvm.metadata"
|
||||
// CHECK: @llvm.used = appending global [4 x i8*] [i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data__Z3foov to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data__Z8foo_weakv to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data_main to i8*), i8* bitcast ({ i32, i32, i64, i8*, i64* }* @__llvm_profile_data__Z10foo_inlinev to i8*)], section "llvm.metadata"
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
// RUN: %clang %s -o - -emit-llvm -S -fprofile-instr-use=%S/Inputs/cxx-throws.profdata -target %itanium_abi_triple | FileCheck -check-prefix=PGOUSE %s
|
||||
// RUN: %clang %s -o - -emit-llvm -S -fprofile-instr-use=%S/Inputs/cxx-throws.profdata -target %itanium_abi_triple | FileCheck -check-prefix=PGOUSE-EXC %s
|
||||
|
||||
// PGOGEN: @[[THC:__llvm_pgo_counters__Z6throwsv]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN-EXC: @[[THC:__llvm_pgo_counters__Z6throwsv]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN: @[[THC:__llvm_profile_counters__Z6throwsv]] = global [9 x i64] zeroinitializer
|
||||
// PGOGEN-EXC: @[[THC:__llvm_profile_counters__Z6throwsv]] = global [9 x i64] zeroinitializer
|
||||
|
||||
// PGOGEN-LABEL: @_Z6throwsv()
|
||||
// PGOUSE-LABEL: @_Z6throwsv()
|
||||
|
|
|
@ -29,9 +29,9 @@ struct NSFastEnumerationState;
|
|||
@end;
|
||||
#endif
|
||||
|
||||
// PGOGEN: @[[FRC:"__llvm_pgo_counters_\+\[A foreach:\]"]] = internal global [2 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BLC:"__llvm_pgo_counters___13\+\[A foreach:\]_block_invoke"]] = internal global [2 x i64] zeroinitializer
|
||||
// PGOGEN: @[[MAC:__llvm_pgo_counters_main]] = global [1 x i64] zeroinitializer
|
||||
// PGOGEN: @[[FRC:"__llvm_profile_counters_\+\[A foreach:\]"]] = internal global [2 x i64] zeroinitializer
|
||||
// PGOGEN: @[[BLC:"__llvm_profile_counters___13\+\[A foreach:\]_block_invoke"]] = internal global [2 x i64] zeroinitializer
|
||||
// PGOGEN: @[[MAC:__llvm_profile_counters_main]] = global [1 x i64] zeroinitializer
|
||||
|
||||
@interface A : NSObject
|
||||
+ (void)foreach: (NSArray *)array;
|
||||
|
|
Loading…
Reference in New Issue