From 9fda270e2ce31dafb29605612119242ffa838511 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 9 Apr 2007 23:29:07 +0000 Subject: [PATCH] eliminate the last uses of some TLI methods. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35844 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/CodeGenPrepare.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index 91449ecb12b..ccd44a22fe8 100644 --- a/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -536,11 +536,15 @@ static bool SinkInvariantGEPIndex(BinaryOperator *BinOp, // Check if it is possible to fold the expression to address mode. if (UseTy && isa(BinOp->getOperand(1))) { - uint64_t Scale = TLI.getTargetData()->getTypeSize(UseTy); int64_t Cst = cast(BinOp->getOperand(1))->getSExtValue(); // e.g. load (gep i32 * %P, (X+42)) => load (%P + X*4 + 168). - if (TLI.isLegalAddressImmediate(Cst*Scale, UseTy) && - (Scale == 1 || TLI.isLegalAddressScale(Scale, UseTy))) { + TargetLowering::AddrMode AM; + // FIXME: This computation isn't right, scale is incorrect. + AM.Scale = TLI.getTargetData()->getTypeSize(UseTy); + // FIXME: Should should also include other fixed offsets. + AM.BaseOffs = Cst*AM.Scale; + + if (TLI.isLegalAddressingMode(AM, UseTy)) { DestBBs.insert(GEPIBB); MadeChange = true; break;