blob: 0330d7c36ef01a84e6377d52eb324e9b9dcfa8e6 [file] [log] [blame]
Petar Jovanovice578e972016-04-11 15:24:23 +00001; RUN: llc -march=mipsel -disable-mips-delay-filler -relocation-model=pic < %s | FileCheck %s
Akira Hatanakacf9a61b2012-12-13 03:17:29 +00002
3@g = external global i32
4
Akira Hatanakac7828352013-03-04 22:25:01 +00005; CHECK: move $gp
Akira Hatanakacf9a61b2012-12-13 03:17:29 +00006; CHECK: jalr $25
7; CHECK: nop
Akira Hatanakac7828352013-03-04 22:25:01 +00008; CHECK-NOT: move $gp
Simon Dardis57f4ae42016-08-04 09:17:07 +00009; CHECK: jr $25
Akira Hatanakacf9a61b2012-12-13 03:17:29 +000010
11define void @f0() nounwind {
12entry:
13 tail call void @externalFunc() nounwind
14 tail call fastcc void @internalFunc()
15 ret void
16}
17
18declare void @externalFunc()
19
20define internal fastcc void @internalFunc() nounwind noinline {
21entry:
David Blaikiea79ac142015-02-27 21:17:42 +000022 %0 = load i32, i32* @g, align 4
Akira Hatanakacf9a61b2012-12-13 03:17:29 +000023 %inc = add nsw i32 %0, 1
24 store i32 %inc, i32* @g, align 4
25 ret void
26}
27
Sasa Stankovic7072a792014-10-01 08:22:21 +000028define void @no_lazy(void (i32)* %pf) {
29
30; CHECK-LABEL: no_lazy
31; CHECK-NOT: gp_disp
32
33 tail call void %pf(i32 1)
34 ret void
35}