Home | History | Annotate | Download | only in llvm-symbolizer
      1 #static volatile int do_mul;
      2 #static volatile int x, v;
      3 #
      4 #int foo () {
      5 #  if (do_mul) x *= v; else x /= v;
      6 #  return x;
      7 #}
      8 #
      9 #int main() {
     10 #  return foo() + foo();
     11 #}
     12 #Build as : clang -gmlt -fdebug-info-for-profiling -O2 discrim.c -o discrim
     13 
     14 RUN: llvm-symbolizer -verbose -print-address -obj=%p/Inputs/discrim < %p/Inputs/discrim.inp | FileCheck %s
     15 
     16 #CHECK: some text
     17 
     18 #CHECK: 0x400590
     19 #CHECK-NEXT: foo
     20 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     21 #CHECK-NEXT: Function start line: 4
     22 #CHECK-NEXT: Line: 9
     23 #CHECK-NEXT: Column: 0
     24 #CHECK-NEXT: main
     25 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     26 #CHECK-NEXT: Function start line: 9
     27 #CHECK-NEXT: Line: 10
     28 #CHECK-NEXT: Column: 0
     29 
     30 #CHECK: 0x4005a5
     31 #CHECK-NEXT: foo
     32 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     33 #CHECK-NEXT: Function start line: 4
     34 #CHECK-NEXT: Line: 5
     35 #CHECK-NEXT: Column: 17
     36 #CHECK-NEXT: Discriminator: 2
     37 #CHECK-NEXT: main
     38 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     39 #CHECK-NEXT: Function start line: 9
     40 #CHECK-NEXT: Line: 10
     41 #CHECK-NEXT: Column: 0
     42 
     43 #CHECK: 0x4005ad
     44 #CHECK-NEXT: foo
     45 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     46 #CHECK-NEXT: Function start line: 4
     47 #CHECK-NEXT: Line: 0
     48 #CHECK-NEXT: Column: 30
     49 #CHECK-NEXT: Discriminator: 4
     50 #CHECK-NEXT: main
     51 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     52 #CHECK-NEXT: Function start line: 9
     53 #CHECK-NEXT: Line: 10
     54 #CHECK-NEXT: Column: 0
     55 
     56 #CHECK: 0x4005b9
     57 #CHECK-NEXT: foo
     58 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     59 #CHECK-NEXT: Function start line: 4
     60 #CHECK-NEXT: Line: 5
     61 #CHECK-NEXT: Column: 7
     62 #CHECK-NEXT: main
     63 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     64 #CHECK-NEXT: Function start line: 9
     65 #CHECK-NEXT: Line: 10
     66 #CHECK-NEXT: Column: 0
     67 #CHECK-NEXT: Discriminator: 2
     68 
     69 #CHECK: 0x4005ce
     70 #CHECK-NEXT: foo
     71 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     72 #CHECK-NEXT: Function start line: 4
     73 #CHECK-NEXT: Line: 5
     74 #CHECK-NEXT: Column: 17
     75 #CHECK-NEXT: Discriminator: 2
     76 #CHECK-NEXT: main
     77 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     78 #CHECK-NEXT: Function start line: 9
     79 #CHECK-NEXT: Line: 10
     80 #CHECK-NEXT: Column: 0
     81 #CHECK-NEXT: Discriminator: 2
     82 
     83 #CHECK: 0x4005d4
     84 #CHECK-NEXT: foo
     85 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     86 #CHECK-NEXT: Function start line: 4
     87 #CHECK-NEXT: Line: 5
     88 #CHECK-NEXT: Column: 30
     89 #CHECK-NEXT: Discriminator: 4
     90 #CHECK-NEXT: main
     91 #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c
     92 #CHECK-NEXT: Function start line: 9
     93 #CHECK-NEXT: Line: 10
     94 #CHECK-NEXT: Column: 0
     95 #CHECK-NEXT: Discriminator: 2
     96 
     97 #CHECK: some more text
     98