Home | History | Annotate | Download | only in X86
      1 ; RUN: llc < %s -relocation-model=pic -mtriple=x86_64-pc-linux | FileCheck %s
      2 ; RUN: llc < %s -relocation-model=pic -mtriple=i386-pc-linux | FileCheck --check-prefix=I386 %s
      3 
      4 @foo1 = extern_weak hidden global i32, align 4
      5 define i32* @bar1() {
      6   ret i32* @foo1
      7 }
      8 ; CHECK: bar1:
      9 ; CHECK: movq foo1@GOTPCREL(%rip), %rax
     10 ; I386: bar1:
     11 ; I386: movl foo1@GOT(%eax), %eax
     12 
     13 @foo2 = external hidden global i32, align 4
     14 define i32* @bar2() {
     15   ret i32* @foo2
     16 }
     17 ; CHECK: bar2:
     18 ; CHECK: leaq foo2(%rip), %rax
     19 ; I386: bar2:
     20 ; I386: leal foo2@GOTOFF(%eax), %eax
     21 
     22 declare extern_weak hidden void @foo3()
     23 define void @bar3() {
     24   call void @foo3()
     25   ret void
     26 }
     27 ; CHECK: bar3:
     28 ; CHECK: callq foo3
     29 ; I386: bar3:
     30 ; I386: calll foo3
     31 
     32 declare external hidden void @foo4()
     33 define void @bar4() {
     34   call void @foo4()
     35   ret void
     36 }
     37 ; CHECK: bar4:
     38 ; CHECK: callq foo4
     39 ; I386: bar4:
     40 ; I386: calll foo4
     41 
     42 declare extern_weak hidden i32 @foo5()
     43 define i32()* @bar5() {
     44   ret i32()* @foo5
     45 }
     46 ; CHECK: bar5:
     47 ; CHECK: movq foo5@GOTPCREL(%rip), %rax
     48 ; I386: bar5:
     49 ; I386: movl foo5@GOT(%eax), %eax
     50 
     51 declare external hidden i32 @foo6()
     52 define i32()* @bar6() {
     53   ret i32()* @foo6
     54 }
     55 ; CHECK: bar6:
     56 ; CHECK: leaq foo6(%rip), %rax
     57 ; I386: bar6:
     58 ; I386: leal foo6@GOTOFF(%eax), %eax
     59