[mips] The decision between GOT_DISP and GOT16 for global addresses depends on ABI...
authorDaniel Sanders <daniel.sanders@imgtec.com>
Thu, 27 Mar 2014 12:49:34 +0000 (12:49 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Thu, 27 Mar 2014 12:49:34 +0000 (12:49 +0000)
Summary: No functional change (for supported use cases)

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

Differential Revision: http://llvm-reviews.chandlerc.com/D3191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204922 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Mips/MipsISelLowering.cpp

index 5f2c8e05a24cbfcc74eab03e38e3fa93b5db3e70..13de7e3a57724c999678712c12c2fcf8d665d9d7 100644 (file)
@@ -1523,8 +1523,8 @@ SDValue MipsTargetLowering::lowerGlobalAddress(SDValue Op,
                                  MipsII::MO_GOT_LO16, DAG.getEntryNode(),
                                  MachinePointerInfo::getGOT());
 
-  return getAddrGlobal(N, Ty, DAG,
-                       hasMips64() ? MipsII::MO_GOT_DISP : MipsII::MO_GOT16,
+  return getAddrGlobal(N, Ty, DAG, (isN32() || isN64()) ? MipsII::MO_GOT_DISP
+                                                        : MipsII::MO_GOT16,
                        DAG.getEntryNode(), MachinePointerInfo::getGOT());
 }