brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 2643a25 Raw
129 lines · plain
1; RUN: llc < %s -emulated-tls -mcpu=generic -mtriple=x86_64-linux-gnu -relocation-model=pic \2; RUN:   | FileCheck -check-prefix=X64 %s3; RUN: llc < %s -emulated-tls -mcpu=generic -mtriple=i386-linux-gnu -relocation-model=pic \4; RUN:   | FileCheck -check-prefix=X32 %s5 6; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux-gnu -relocation-model=pic \7; RUN:   | FileCheck -check-prefix=X64 %s8; RUN: llc < %s -mcpu=generic -mtriple=i386-linux-gnu -relocation-model=pic \9; RUN:   | FileCheck -check-prefix=X32 %s10 11; External Linkage12@a = dso_local global i32 0, align 413 14define dso_local i32 @my_access_global_a() #0 {15; X32-LABEL: my_access_global_a:16; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %eax17; X32-NEXT:  movl a@GOTOFF(%eax), %eax18; X64-LABEL: my_access_global_a:19; X64:       movl a(%rip), %eax20 21entry:22  %0 = load i32, ptr @a, align 423  ret i32 %024}25 26; WeakAny Linkage27@b = weak dso_local global i32 0, align 428 29define dso_local i32 @my_access_global_b() #0 {30; X32-LABEL: my_access_global_b:31; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %eax32; X32-NEXT:  movl b@GOTOFF(%eax), %eax33; X64-LABEL: my_access_global_b:34; X64:       movl b(%rip), %eax35 36entry:37  %0 = load i32, ptr @b, align 438  ret i32 %039}40 41; Internal Linkage42@c = internal global i32 0, align 443 44define dso_local i32 @my_access_global_c() #0 {45; X32-LABEL: my_access_global_c:46; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %eax47; X32-NEXT:  movl c@GOTOFF(%eax), %eax48; X64-LABEL: my_access_global_c:49; X64:       movl c(%rip), %eax50 51entry:52  %0 = load i32, ptr @c, align 453  ret i32 %054}55 56; External Linkage, only declaration.57@d = external global i32, align 458 59define dso_local i32 @my_access_global_load_d() #0 {60; X32-LABEL: my_access_global_load_d:61; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %eax62; X32-NEXT:  movl d@GOT(%eax), %eax63; X32-NEXT:  movl (%eax), %eax64; X64-LABEL: my_access_global_load_d:65; X64:       movq d@GOTPCREL(%rip), %rax66; X64-NEXT:  movl (%rax), %eax67 68entry:69  %0 = load i32, ptr @d, align 470  ret i32 %071}72 73; External Linkage, only declaration, store a value.74 75define dso_local i32 @my_access_global_store_d() #0 {76; X32-LABEL: my_access_global_store_d:77; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %eax78; X32-NEXT:  movl d@GOT(%eax), %eax79; X32-NEXT:  movl $2, (%eax)80; X64-LABEL: my_access_global_store_d:81; X64:       movq d@GOTPCREL(%rip), %rax82; X64-NEXT:  movl $2, (%rax)83 84entry:85  store i32 2, ptr @d, align 486  ret i32 087}88 89; External Linkage, function pointer access.90declare i32 @access_fp(ptr)91declare i32 @foo()92 93define dso_local i32 @my_access_fp_foo() #0 {94; X32-LABEL: my_access_fp_foo:95; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %ebx96; X32-NEXT:  movl	foo@GOT(%ebx), %eax97; X64-LABEL: my_access_fp_foo:98; X64:       movq foo@GOTPCREL(%rip), %rdi99 100entry:101  %call = call i32 @access_fp(ptr @foo)102  ret i32 %call103}104 105; LinkOnceODR Linkage, function pointer access.106 107$bar = comdat any108 109define linkonce_odr dso_local i32 @bar() comdat {110entry:111  ret i32 0112}113 114define dso_local i32 @my_access_fp_bar() #0 {115; X32-LABEL: my_access_fp_bar:116; X32:       addl $_GLOBAL_OFFSET_TABLE_{{.*}}, %ebx117; X32-NEXT:  leal bar@GOTOFF(%ebx), %eax118; X64-LABEL: my_access_fp_bar:119; X64:       leaq bar(%rip), %rdi120 121entry:122  %call = call i32 @access_fp(ptr @bar)123  ret i32 %call124}125 126!llvm.module.flags = !{!0, !1}127!0 = !{i32 1, !"PIC Level", i32 1}128!1 = !{i32 1, !"PIE Level", i32 1}129