| #static volatile int do_mul; |
| #static volatile int x, v; |
| # |
| #int foo () { |
| # if (do_mul) x *= v; else x /= v; |
| # return x; |
| #} |
| # |
| #int main() { |
| # return foo() + foo(); |
| #} |
| #Build as : clang -gmlt -fdebug-info-for-profiling -O2 discrim.c -o discrim |
| |
| RUN: llvm-symbolizer -verbose -print-address -obj=%p/Inputs/discrim < %p/Inputs/discrim.inp | FileCheck %s |
| |
| #CHECK: some text |
| |
| #CHECK: 0x400590 |
| #CHECK-NEXT: foo |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 4 |
| #CHECK-NEXT: Line: 9 |
| #CHECK-NEXT: Column: 0 |
| #CHECK-NEXT: main |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 9 |
| #CHECK-NEXT: Line: 10 |
| #CHECK-NEXT: Column: 0 |
| |
| #CHECK: 0x4005a5 |
| #CHECK-NEXT: foo |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 4 |
| #CHECK-NEXT: Line: 5 |
| #CHECK-NEXT: Column: 17 |
| #CHECK-NEXT: Discriminator: 2 |
| #CHECK-NEXT: main |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 9 |
| #CHECK-NEXT: Line: 10 |
| #CHECK-NEXT: Column: 0 |
| |
| #CHECK: 0x4005ad |
| #CHECK-NEXT: foo |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 4 |
| #CHECK-NEXT: Line: 0 |
| #CHECK-NEXT: Column: 30 |
| #CHECK-NEXT: Discriminator: 4 |
| #CHECK-NEXT: main |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 9 |
| #CHECK-NEXT: Line: 10 |
| #CHECK-NEXT: Column: 0 |
| |
| #CHECK: 0x4005b9 |
| #CHECK-NEXT: foo |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 4 |
| #CHECK-NEXT: Line: 5 |
| #CHECK-NEXT: Column: 7 |
| #CHECK-NEXT: main |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 9 |
| #CHECK-NEXT: Line: 10 |
| #CHECK-NEXT: Column: 0 |
| #CHECK-NEXT: Discriminator: 2 |
| |
| #CHECK: 0x4005ce |
| #CHECK-NEXT: foo |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 4 |
| #CHECK-NEXT: Line: 5 |
| #CHECK-NEXT: Column: 17 |
| #CHECK-NEXT: Discriminator: 2 |
| #CHECK-NEXT: main |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 9 |
| #CHECK-NEXT: Line: 10 |
| #CHECK-NEXT: Column: 0 |
| #CHECK-NEXT: Discriminator: 2 |
| |
| #CHECK: 0x4005d4 |
| #CHECK-NEXT: foo |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 4 |
| #CHECK-NEXT: Line: 5 |
| #CHECK-NEXT: Column: 30 |
| #CHECK-NEXT: Discriminator: 4 |
| #CHECK-NEXT: main |
| #CHECK-NEXT: Filename: /tmp{{[\\/]}}discrim.c |
| #CHECK-NEXT: Function start line: 9 |
| #CHECK-NEXT: Line: 10 |
| #CHECK-NEXT: Column: 0 |
| #CHECK-NEXT: Discriminator: 2 |
| |
| #CHECK: some more text |