From: Duncan Sands Date: Sun, 15 Jun 2008 20:12:31 +0000 (+0000) Subject: The transforms in visitEXTRACT_VECTOR_ELT are X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ec87aa87fea8cc5b5961849a34abb79ef7df64bc;p=oota-llvm.git The transforms in visitEXTRACT_VECTOR_ELT are not valid if the load is volatile. Hopefully all wrong DAG combiner transforms of volatile loads and stores have now been caught. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52293 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index ac433cf3412..462a384d0a9 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -4093,8 +4093,8 @@ SDOperand DAGCombiner::visitBR_CC(SDNode *N) { } -/// CombineToPreIndexedLoadStore - Try turning a load / store and a -/// pre-indexed load / store when the base pointer is a add or subtract +/// CombineToPreIndexedLoadStore - Try turning a load / store into a +/// pre-indexed load / store when the base pointer is an add or subtract /// and it has other uses besides the load / store. After the /// transformation, the new indexed load / store has effectively folded /// the add / subtract in and all of its other uses are redirected to the @@ -4215,7 +4215,7 @@ bool DAGCombiner::CombineToPreIndexedLoadStore(SDNode *N) { return true; } -/// CombineToPostIndexedLoadStore - Try combine a load / store with a +/// CombineToPostIndexedLoadStore - Try to combine a load / store with a /// add / sub of the base pointer node into a post-indexed load / store. /// The transformation folded the add / subtract into the new indexed /// load / store effectively and all of its uses are redirected to the @@ -4749,7 +4749,7 @@ SDOperand DAGCombiner::visitEXTRACT_VECTOR_ELT(SDNode *N) { Elt = (Idx < NumElems) ? Idx : Idx - NumElems; } } - if (!LN0 || !LN0->hasOneUse()) + if (!LN0 || !LN0->hasOneUse() || LN0->isVolatile()) return SDOperand(); unsigned Align = LN0->getAlignment();