Home | History | Annotate | Download | only in InstrProfiling
      1 ;; Checks for platform specific section names and initialization code.
      2 
      3 ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.10.0 -instrprof -S | FileCheck %s -check-prefix=MACHO
      4 ; RUN: opt < %s -mtriple=x86_64-unknown-linux -instrprof -S | FileCheck %s -check-prefix=LINUX
      5 ; RUN: opt < %s -mtriple=x86_64-unknown-freebsd -instrprof -S | FileCheck %s -check-prefix=FREEBSD
      6 ; RUN: opt < %s -mtriple=x86_64-pc-solaris -instrprof -S | FileCheck %s -check-prefix=SOLARIS
      7 
      8 @__profn_foo = hidden constant [3 x i8] c"foo"
      9 ; MACHO: @__profn_foo = hidden constant [3 x i8] c"foo", section "__DATA,__llvm_prf_names", align 1
     10 ; ELF: @__profn_foo = hidden constant [3 x i8] c"foo", section "__llvm_prf_names", align 1
     11 
     12 ; MACHO: @__profc_foo = hidden global [1 x i64] zeroinitializer, section "__DATA,__llvm_prf_cnts", align 8
     13 ; ELF: @__profc_foo = hidden global [1 x i64] zeroinitializer, section "__llvm_prf_cnts", align 8
     14 
     15 ; MACHO: @__profd_foo = hidden {{.*}}, section "__DATA,__llvm_prf_data", align 8
     16 ; LINUX: @__profd_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
     17 ; FREEBSD: @__profd_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
     18 ; SOLARIS: @__profd_foo = hidden {{.*}}, section "__llvm_prf_data", align 8
     19 
     20 define void @foo() {
     21   call void @llvm.instrprof.increment(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i64 0, i32 1, i32 0)
     22   ret void
     23 }
     24 
     25 declare void @llvm.instrprof.increment(i8*, i64, i32, i32)
     26 
     27 ;; Emit registration functions for platforms that don't find the
     28 ;; symbols by their sections.
     29 
     30 ; MACHO-NOT: define internal void @__llvm_profile_register_functions
     31 ; LINUX-NOT: define internal void @__llvm_profile_register_functions
     32 ; FREEBSD-NOT: define internal void @__llvm_profile_register_functions
     33 ; SOLARIS: define internal void @__llvm_profile_register_functions
     34 
     35 ; MACHO-NOT: define internal void @__llvm_profile_init
     36 ; LINUX-NOT: define internal void @__llvm_profile_init
     37 ; FREEBSD-NOT: define internal void @__llvm_profile_init
     38 ; SOLARIS: define internal void @__llvm_profile_init
     39