1ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// Test that unprofiled files are recognized. Here, we have two functions in the
2ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// profile, main() and function_in_header, but we use the profile on a file that
3ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// has the profile-less some_unprofiled_function so that the only profiled code
4ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// in #included in a header.
5ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
6ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// FIXME: It would be nice to use -verify here instead of FileCheck, but -verify
7ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// doesn't play well with warnings that have no line number.
8ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
9ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: llvm-profdata merge %S/Inputs/c-unprofiled.proftext -o %t.profdata
10ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name c-unprofiled.c -I %S/Inputs/ %s -o /dev/null -emit-llvm -fprofile-instr-use=%t.profdata -Wprofile-instr-unprofiled 2>&1 | FileCheck %s
11ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
12ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// CHECK: warning: no profile data available for file "c-unprofiled.c"
13ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
14ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#include "profiled_header.h"
15ef8225444452a1486bd721f3285301fe84643b00Stephen Hines
16ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#ifdef GENERATE_OUTDATED_DATA
17ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesint main(int argc, const char *argv[]) {
18ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  function_in_header(0);
19ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  return 0;
20ef8225444452a1486bd721f3285301fe84643b00Stephen Hines}
21ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#else
22ef8225444452a1486bd721f3285301fe84643b00Stephen Hinesvoid some_unprofiled_function(int i) {
23ef8225444452a1486bd721f3285301fe84643b00Stephen Hines  if (i)
24ef8225444452a1486bd721f3285301fe84643b00Stephen Hines    function_in_header(i);
25ef8225444452a1486bd721f3285301fe84643b00Stephen Hines}
26ef8225444452a1486bd721f3285301fe84643b00Stephen Hines#endif
27