diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2016-06-27 03:19:40 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2016-06-27 03:19:40 +0000 |
| commit | 1ac1fa818e7a4b4a9f0483c07c0b9f9e5a1b0c72 (patch) | |
| tree | 43aa5f19b3bb604190b3f987d82d64a80814072d | |
| parent | 596eba86bc0dfcca3d3d39e8ec24c98a39bda8f5 (diff) | |
| download | bcm5719-llvm-1ac1fa818e7a4b4a9f0483c07c0b9f9e5a1b0c72.tar.gz bcm5719-llvm-1ac1fa818e7a4b4a9f0483c07c0b9f9e5a1b0c72.zip | |
Mips: Fix access to private functions.
llvm-svn: 273843
| -rw-r--r-- | llvm/lib/Target/Mips/MipsISelLowering.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/CodeGen/Mips/private-addr.ll | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MipsISelLowering.cpp b/llvm/lib/Target/Mips/MipsISelLowering.cpp index 0c43cc07634..1e640e17379 100644 --- a/llvm/lib/Target/Mips/MipsISelLowering.cpp +++ b/llvm/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<Function>(GV))) + if (GV->hasLocalLinkage()) return getAddrLocal(N, SDLoc(N), Ty, DAG, ABI.IsN32() || ABI.IsN64()); if (LargeGOT) diff --git a/llvm/test/CodeGen/Mips/private-addr.ll b/llvm/test/CodeGen/Mips/private-addr.ll new file mode 100644 index 00000000000..37dd6fe53c4 --- /dev/null +++ b/llvm/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 +} |

