From 5b3bbc7cd7bff4275b94003d4bf1fa296c6a10d0 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 11 Nov 2006 04:53:30 +0000 Subject: [PATCH] allow the offset of a preinc'd load to be the low-part of a global. This produces this clever code: _millisecs: lis r2, ha16(_Time.1182) lwzu r3, lo16(_Time.1182)(r2) lwz r2, 4(r2) addic r4, r2, 1 addze r3, r3 blr instead of this: _millisecs: lis r2, ha16(_Time.1182) la r3, lo16(_Time.1182)(r2) lwz r2, lo16(_Time.1182)(r2) lwz r3, 4(r3) addic r4, r3, 1 addze r3, r2 blr for: long %millisecs() { %tmp = load long* %Time.1182 ; [#uses=1] %tmp1 = add long %tmp, 1 ; [#uses=1] ret long %tmp1 } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31673 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index d3844f469e0..e70eb97871a 100644 --- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -856,7 +856,8 @@ SDNode *PPCDAGToDAGISel::Select(SDOperand Op) { } SDOperand Offset = LD->getOffset(); - if (isa(Offset)) { + if (isa(Offset) || + Offset.getOpcode() == ISD::TargetGlobalAddress) { SDOperand Chain = LD->getChain(); SDOperand Base = LD->getBasePtr(); AddToISelQueue(Chain); -- 2.34.1