48 lines · plain
1; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux-gnu -relocation-model=pic \2; RUN: | FileCheck -check-prefix=X64 --check-prefix=PIC %s3; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux-gnu \4; RUN: | FileCheck -check-prefix=X64 --check-prefix=STATIC %s5 6define i32 @fp_weakfunc() {7; X64: weakfunc@GOTPCREL(%rip)8 %c = icmp ne ptr @weakfunc, null9 %s = select i1 %c, i32 1, i32 010 ret i32 %s11}12declare extern_weak i32 @weakfunc() nonlazybind13 14define void @memset_call(ptr nocapture %a, i8 %c, i32 %n) {15; X64: callq *memset@GOTPCREL(%rip)16 call void @llvm.memset.p0.i32(ptr %a, i8 %c, i32 %n, i1 false)17 ret void18}19 20define void @memcpy_call(ptr nocapture %a, ptr nocapture readonly %b, i64 %n) {21; X64: callq *memcpy@GOTPCREL(%rip)22 call void @llvm.memcpy.p0.p0.i64(ptr %a, ptr %b, i64 %n, i32 1, i1 false)23 ret void24}25 26define i32 @main() {27; X64: callq *foo@GOTPCREL(%rip)28; PIC: callq bar@PLT29; STATIC: callq bar@PLT30; X64: callq baz31 32 %retval = alloca i32, align 433 store i32 0, ptr %retval, align 434 %call1 = call i32 @foo()35 %call2 = call i32 @bar()36 %call3 = call i32 @baz()37 ret i32 038}39 40declare i32 @foo() nonlazybind41declare i32 @bar()42declare hidden i32 @baz() nonlazybind43declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i32, i1)44declare void @llvm.memset.p0.i32(ptr nocapture, i8, i32, i1)45 46!llvm.module.flags = !{!1}47!1 = !{i32 7, !"RtLibUseGOT", i32 1}48