Use DW_FORM_addr for DW_AT_entry_pc.
[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 // CHECK:       .byte   17                      ## DW_TAG_compile_unit
6 // CHECK-NEXT:  .byte   1                       ## DW_CHILDREN_yes
7 // CHECK-NEXT:  .byte   37                      ## DW_AT_producer
8 // CHECK-NEXT:  .byte   8                       ## DW_FORM_string
9 // CHECK-NEXT:  .byte   19                      ## DW_AT_language
10 // CHECK-NEXT:  .byte   11                      ## DW_FORM_data1
11 // CHECK-NEXT:  .byte   3                       ## DW_AT_name
12 // CHECK-NEXT:  .byte   8                       ## DW_FORM_string
13 // CHECK-NEXT:  .byte   82                      ## DW_AT_entry_pc
14 // CHECK-NEXT:  .byte   1                       ## DW_FORM_addr
15 // CHECK-NEXT:  .byte   16                      ## DW_AT_stmt_list
16 // CHECK-NEXT:  .byte   6                       ## DW_FORM_data4
17 // CHECK-NEXT:  .byte   27                      ## DW_AT_comp_dir
18 // CHECK-NEXT:  .byte   8                       ## DW_FORM_string
19 // CHECK-NEXT:  .byte   225                     ## DW_AT_APPLE_optimized
20
21 struct a {
22   int c;
23   struct a *d;
24 };
25
26 int ret;
27
28 void foo(int x) __attribute__((noinline));
29 void *bar(struct a *b) __attribute__((noinline));
30
31 void foo(int x)
32 {
33   ret = x;
34 }
35
36 void *bar(struct a *b) {
37   foo(b->c);
38   return b;
39 }
40
41 int main(int argc, char *argv[]) {
42   struct a e;
43   e.c = 4;
44   e.d = &e;
45
46   (void)bar(&e);
47   return ret;
48 }