/*===- LineProfiling.c - Support library for line profiling ---------------===*\
|*
|*                     The LLVM Compiler Infrastructure
|*
|* This file is distributed under the University of Illinois Open Source
|* License. See LICENSE.TXT for details.
|* 
|*===----------------------------------------------------------------------===*|
|* 
|* This file implements the call back routines for the line profiling
|* instrumentation pass. Link against this library when running code through
|* the -insert-line-profiling LLVM pass.
|*
\*===----------------------------------------------------------------------===*/

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>

/* A file in this case is a translation unit. Each .o file built with line
 * profiling enabled will emit to a different file. Only one file may be
 * started at a time.
 */
void llvm_prof_linectr_start_file(const char *orig_filename) {
  printf("[%s]\n", orig_filename);
}

/* Emit data about a counter to the data file. */
void llvm_prof_linectr_emit_counter(const char *dir, const char *file,
                                    uint32_t line, uint32_t column,
                                    uint64_t *counter) {
  printf("%s/%s:%u:%u %lu\n", dir, file, line, column, *counter);
}

void llvm_prof_linectr_end_file() {
  printf("-----\n");
}

/*===- LineProfiling.c - Support library for line profiling ---------------===*\
|*
|*                     The LLVM Compiler Infrastructure
|*
|* This file is distributed under the University of Illinois Open Source
|* License. See LICENSE.TXT for details.
|* 
|*===----------------------------------------------------------------------===*|
|* 
|* This file implements the call back routines for the line profiling
|* instrumentation pass. Link against this library when running code through
|* the -insert-line-profiling LLVM pass.
|*
\*===----------------------------------------------------------------------===*/

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>

#include "llvm/Support/DataTypes.h"

/* A file in this case is a translation unit. Each .o file built with line
 * profiling enabled will emit to a different file. Only one file may be
 * started at a time.
 */
void llvm_prof_linectr_start_file(const char *orig_filename) {
  printf("[%s]\n", orig_filename);
}

/* Emit data about a counter to the data file. */
void llvm_prof_linectr_emit_counter(const char *dir, const char *file,
                                    uint32_t line, uint32_t column,
                                    uint64_t *counter) {
  printf("%s/%s:%u:%u %" PRIu64 "\n", dir, file, line, column, *counter);
}

void llvm_prof_linectr_end_file() {
  printf("-----\n");
}

Print our uint64_t with the more portable (C99 and C++0x) %PRIu64 format specifier.
Print our uint64_t with the more portable (C99 and C++0x) %PRIu64 format
specifier.


git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@129384 91177308-0d34-0410-b5e6-96231b3b80d8
