Change the API of the instrumented profiling library to work with shared
objects.
- Most things are now declared hidden, so that each executable gets
its own copy.
- Initialization hooks up a linked list of writers.
- The raw format with shared objects that are profiled consists of a
concatenated series of profiles. llvm-profdata knows how to deal
with that since r208938.
<rdar://problem/16918688>
llvm-svn: 208940
31 lines
654 B
C++
31 lines
654 B
C++
//===- InstrProfilingRuntime.cpp - PGO runtime initialization -------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
extern "C" {
|
|
|
|
#include "InstrProfiling.h"
|
|
|
|
__attribute__((visibility("hidden"))) int __llvm_profile_runtime;
|
|
|
|
}
|
|
|
|
namespace {
|
|
|
|
class RegisterRuntime {
|
|
public:
|
|
RegisterRuntime() {
|
|
__llvm_profile_register_write_file_atexit();
|
|
__llvm_profile_register_write_file();
|
|
}
|
|
};
|
|
|
|
RegisterRuntime Registration;
|
|
|
|
}
|