From: Bob Wilson Date: Wed, 22 Sep 2010 18:44:56 +0000 (+0000) Subject: When moving zext/sext to be folded with a load, ignore the issue of whether X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ec57a1acec7803fff2faa54c6ea8fec2be01aeb9;p=oota-llvm.git When moving zext/sext to be folded with a load, ignore the issue of whether truncates are free only in the case where the extended type is legal but the load type is not. If both types are illegal, such as when they are too big, the load may not be legalized into an extended load. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114568 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index 526107c9770..3221e143476 100644 --- a/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -772,7 +772,8 @@ bool CodeGenPrepare::MoveExtToFormExtLoad(Instruction *I) { // If the load has other users and the truncate is not free, this probably // isn't worthwhile. if (!LI->hasOneUse() && - TLI && TLI->isTypeLegal(TLI->getValueType(LI->getType())) && + TLI && (TLI->isTypeLegal(TLI->getValueType(LI->getType())) || + !TLI->isTypeLegal(TLI->getValueType(I->getType()))) && !TLI->isTruncateFree(I->getType(), LI->getType())) return false;