| #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 |