Remove unused variable Loc and pointless variables unified_syntax
[oota-llvm.git] / test / FrontendC / 2010-06-28-DbgEntryPC.c
1 // RUN: %llvmgcc -S -O2 -g %s -o - | llc -O2 | FileCheck %s
2 // Use DW_FORM_addr for DW_AT_entry_pc.
3 // Radar 8094785
4
5 // XTARGET: x86,i386,i686
6 // CHECK:       .byte   17                      ## DW_TAG_compile_unit
7 // CHECK-NEXT:  .byte   1                       ## DW_CHILDREN_yes
8 // CHECK-NEXT:  .byte   37                      ## DW_AT_producer
9 // CHECK-NEXT:  .byte   8                       ## DW_FORM_string
10 // CHECK-NEXT:  .byte   19                      ## DW_AT_language
11 // CHECK-NEXT:  .byte   11                      ## DW_FORM_data1
12 // CHECK-NEXT:  .byte   3                       ## DW_AT_name
13 // CHECK-NEXT:  .byte   8                       ## DW_FORM_string
14 // CHECK-NEXT:  .byte   82                      ## DW_AT_entry_pc
15 // CHECK-NEXT:  .byte   1                       ## DW_FORM_addr
16 // CHECK-NEXT:  .byte   16                      ## DW_AT_stmt_list
17 // CHECK-NEXT:  .byte   6                       ## DW_FORM_data4
18 // CHECK-NEXT:  .byte   27                      ## DW_AT_comp_dir
19 // CHECK-NEXT:  .byte   8                       ## DW_FORM_string
20 // CHECK-NEXT:  .byte   225                     ## DW_AT_APPLE_optimized
21
22 struct a {
23   int c;
24   struct a *d;
25 };
26
27 int ret;
28
29 void foo(int x) __attribute__((noinline));
30 void *bar(struct a *b) __attribute__((noinline));
31
32 void foo(int x)
33 {
34   ret = x;
35 }
36
37 void *bar(struct a *b) {
38   foo(b->c);
39   return b;
40 }
41
42 int main(int argc, char *argv[]) {
43   struct a e;
44   e.c = 4;
45   e.d = &e;
46
47   (void)bar(&e);
48   return ret;
49 }