/* llvm_start_block_profiling - This is the main entry point of the block
* profiling library. It is responsible for setting up the atexit handler.
*/
-void llvm_start_block_profiling(int argc, const char **argv,
- unsigned *arrayStart, unsigned numElements) {
- save_arguments(argc, argv);
+int llvm_start_block_profiling(int argc, const char **argv,
+ unsigned *arrayStart, unsigned numElements) {
+ int Ret = save_arguments(argc, argv);
ArrayStart = arrayStart;
NumElements = numElements;
atexit(BlockProfAtExitHandler);
+ return Ret;
}
/* save_arguments - Save argc and argv as passed into the program for the file
* we output.
*/
-void save_arguments(int argc, const char **argv) {
+int save_arguments(int argc, const char **argv) {
unsigned Length, i;
- if (SavedArgs || !argv) return; /* This can be called multiple times */
+ if (SavedArgs || !argv) return argc; /* This can be called multiple times */
for (Length = 0, i = 0; i != (unsigned)argc; ++i)
Length += strlen(argv[i])+1;
}
SavedArgsLength = Length;
+
+ return argc;
}
/* llvm_start_func_profiling - This is the main entry point of the function
* profiling library. It is responsible for setting up the atexit handler.
*/
-void llvm_start_func_profiling(int argc, const char **argv,
- unsigned *arrayStart, unsigned numElements) {
- save_arguments(argc, argv);
+int llvm_start_func_profiling(int argc, const char **argv,
+ unsigned *arrayStart, unsigned numElements) {
+ int Ret = save_arguments(argc, argv);
ArrayStart = arrayStart;
NumElements = numElements;
atexit(FuncProfAtExitHandler);
+ return Ret;
}
/* save_arguments - Save argc and argv as passed into the program for the file
* we output.
*/
-void save_arguments(int argc, const char **argv);
+int save_arguments(int argc, const char **argv);
enum ProfilingType {
Arguments = 1, /* The command line argument block */