From: Bob Wilson Date: Tue, 21 Sep 2010 21:54:27 +0000 (+0000) Subject: Move a sign-extend or a zero-extend of a load to the same basic block as the X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=71dc4d96ed39fadcdccf8c578d49a1afdae0c6ba;p=oota-llvm.git Move a sign-extend or a zero-extend of a load to the same basic block as the load when the type of the load is not legal, even if truncates are not free. The load is going to be legalized to an extending load anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114488 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index 0e05a26d243..526107c9770 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->isTruncateFree(I->getType(), LI->getType())) + TLI && TLI->isTypeLegal(TLI->getValueType(LI->getType())) && + !TLI->isTruncateFree(I->getType(), LI->getType())) return false; // Check whether the target supports casts folded into loads.