summaryrefslogtreecommitdiff
path: root/lib/Target/Mips/MipsISelLowering.h
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2014-03-26 13:59:42 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2014-03-26 13:59:42 +0000
commitcee1aecc57161f75c6d6af7c1f2ea6758bdd6b02 (patch)
tree4f8b77c56a84ade8845dcb9d9d7928905db0fb26 /lib/Target/Mips/MipsISelLowering.h
parent4de1039403c36241b7f6f2cdf25f372a526fc6e7 (diff)
downloadllvm-cee1aecc57161f75c6d6af7c1f2ea6758bdd6b02.tar.gz
llvm-cee1aecc57161f75c6d6af7c1f2ea6758bdd6b02.tar.bz2
llvm-cee1aecc57161f75c6d6af7c1f2ea6758bdd6b02.tar.xz
[mips] The decision to use MO_GOT_PAGE and MO_GOT_OFST depends on the ABI being N32 or N64 not the arch being MIPS64
Summary: No functional change (in supported use cases) Reviewers: matheusalmeida Reviewed By: matheusalmeida Differential Revision: http://llvm-reviews.chandlerc.com/D3177 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204805 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Mips/MipsISelLowering.h')
-rw-r--r--lib/Target/Mips/MipsISelLowering.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/Target/Mips/MipsISelLowering.h b/lib/Target/Mips/MipsISelLowering.h
index b03cccfb58..7831fecae1 100644
--- a/lib/Target/Mips/MipsISelLowering.h
+++ b/lib/Target/Mips/MipsISelLowering.h
@@ -258,17 +258,17 @@ namespace llvm {
// computing a local symbol's address:
//
// (add (load (wrapper $gp, %got(sym)), %lo(sym))
- template<class NodeTy>
+ template <class NodeTy>
SDValue getAddrLocal(NodeTy *N, EVT Ty, SelectionDAG &DAG,
- bool HasMips64) const {
+ bool IsN32OrN64) const {
SDLoc DL(N);
- unsigned GOTFlag = HasMips64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
+ unsigned GOTFlag = IsN32OrN64 ? MipsII::MO_GOT_PAGE : MipsII::MO_GOT;
SDValue GOT = DAG.getNode(MipsISD::Wrapper, DL, Ty, getGlobalReg(DAG, Ty),
getTargetNode(N, Ty, DAG, GOTFlag));
SDValue Load = DAG.getLoad(Ty, DL, DAG.getEntryNode(), GOT,
MachinePointerInfo::getGOT(), false, false,
false, 0);
- unsigned LoFlag = HasMips64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
+ unsigned LoFlag = IsN32OrN64 ? MipsII::MO_GOT_OFST : MipsII::MO_ABS_LO;
SDValue Lo = DAG.getNode(MipsISD::Lo, DL, Ty,
getTargetNode(N, Ty, DAG, LoFlag));
return DAG.getNode(ISD::ADD, DL, Ty, Load, Lo);
@@ -434,6 +434,8 @@ namespace llvm {
bool HasMips64, IsN64, IsO32;
+ bool isN32() const { return Subtarget->isABI_N32(); }
+
private:
// Create a TargetGlobalAddress node.
SDValue getTargetNode(GlobalAddressSDNode *N, EVT Ty, SelectionDAG &DAG,