llvm-6502/test/CodeGen/Mips/gpreg-lazy-binding.ll
Sasa Stankovic 05a13f0bd0 [mips] For indirect calls we don't need $gp to point to .got. Mips linker
doesn't generate lazy binding stub for a function whose address is taken in
the program.

Differential Revision: http://reviews.llvm.org/D5067


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218744 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-01 08:22:21 +00:00

36 lines
679 B
LLVM

; RUN: llc -march=mipsel -disable-mips-delay-filler < %s | FileCheck %s
@g = external global i32
; CHECK: move $gp
; CHECK: jalr $25
; CHECK: nop
; CHECK-NOT: move $gp
; CHECK: jalr $25
define void @f0() nounwind {
entry:
tail call void @externalFunc() nounwind
tail call fastcc void @internalFunc()
ret void
}
declare void @externalFunc()
define internal fastcc void @internalFunc() nounwind noinline {
entry:
%0 = load i32* @g, align 4
%inc = add nsw i32 %0, 1
store i32 %inc, i32* @g, align 4
ret void
}
define void @no_lazy(void (i32)* %pf) {
; CHECK-LABEL: no_lazy
; CHECK-NOT: gp_disp
tail call void %pf(i32 1)
ret void
}