brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 643318d Raw
86 lines · plain
1; Test loads of symbolic addresses in PIC code.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -relocation-model=pic | FileCheck %s4 5@ev = external global i326@dv = global i32 07@pv = protected global i32 08@hv = hidden global i32 09 10declare void @ef()11define void @df() {12  ret void13}14define protected void @pf() {15  ret void16}17define hidden void @hf() {18  ret void19}20 21; Test loads of external variables, which must go via the GOT.22define ptr@f1() {23; CHECK-LABEL: f1:24; CHECK: lgrl %r2, ev@GOT25; CHECK: br %r1426  ret ptr@ev27}28 29; Check loads of locally-defined normal-visibility variables, which might30; be overridden.  The load must go via the GOT.31define ptr@f2() {32; CHECK-LABEL: f2:33; CHECK: lgrl %r2, dv@GOT34; CHECK: br %r1435  ret ptr@dv36}37 38; Check loads of protected variables, which in the small code model39; must be in range of LARL.40define ptr@f3() {41; CHECK-LABEL: f3:42; CHECK: larl %r2, pv43; CHECK: br %r1444  ret ptr@pv45}46 47; ...likewise hidden variables.48define ptr@f4() {49; CHECK-LABEL: f4:50; CHECK: larl %r2, hv51; CHECK: br %r1452  ret ptr@hv53}54 55; Like f1, but for functions.56define ptr@f5() {57; CHECK-LABEL: f5:58; CHECK: lgrl %r2, ef@GOT59; CHECK: br %r1460  ret ptr@ef61}62 63; Like f2, but for functions.64define ptr@f6() {65; CHECK-LABEL: f6:66; CHECK: lgrl %r2, df@GOT67; CHECK: br %r1468  ret ptr@df69}70 71; Like f3, but for functions.72define ptr@f7() {73; CHECK-LABEL: f7:74; CHECK: larl %r2, pf75; CHECK: br %r1476  ret ptr@pf77}78 79; Like f4, but for functions.80define ptr@f8() {81; CHECK-LABEL: f8:82; CHECK: larl %r2, hf83; CHECK: br %r1484  ret ptr@hf85}86