From: Rafael Espindola Date: Mon, 27 Jun 2016 03:19:40 +0000 (+0000) Subject: Mips: Fix access to private functions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=00fd9cb07c2bd0b892fd51c1707bbcf0e03c4db8;p=llvm Mips: Fix access to private functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273843 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/Mips/MipsISelLowering.cpp b/lib/Target/Mips/MipsISelLowering.cpp index 0c43cc07634..1e640e17379 100644 --- a/lib/Target/Mips/MipsISelLowering.cpp +++ b/lib/Target/Mips/MipsISelLowering.cpp @@ -1764,7 +1764,7 @@ SDValue MipsTargetLowering::lowerGlobalAddress(SDValue Op, return getAddrNonPIC(N, SDLoc(N), Ty, DAG); } - if (GV->hasInternalLinkage() || (GV->hasLocalLinkage() && !isa(GV))) + if (GV->hasLocalLinkage()) return getAddrLocal(N, SDLoc(N), Ty, DAG, ABI.IsN32() || ABI.IsN64()); if (LargeGOT) diff --git a/test/CodeGen/Mips/private-addr.ll b/test/CodeGen/Mips/private-addr.ll new file mode 100644 index 00000000000..37dd6fe53c4 --- /dev/null +++ b/test/CodeGen/Mips/private-addr.ll @@ -0,0 +1,14 @@ +; RUN: llc -mtriple=mips-pc-linux -relocation-model=pic < %s | FileCheck %s + +define private void @bar() { + ret void +} + +define void()* @foo() { +; CHECK: foo: +; CHECK: lw $[[REG:.*]], %got($bar)($1) +; CHECK-NEXT: jr $ra +; CHECK-NEXT: addiu $2, $[[REG]], %lo($bar) + + ret void()* @bar +}