diff options
author | Dan Gohman <gohman@apple.com> | 2009-10-31 14:14:04 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-10-31 14:14:04 +0000 |
commit | ba8735d25a5e6f29ac4c9b44439185cb9340f9f5 (patch) | |
tree | e915d1cfbf35a77dee38c518f4a44c0a0f8b3fbb /llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | |
parent | 97abba5b6fbc18c393972f4ed4dca453a5991161 (diff) | |
download | bcm5719-llvm-ba8735d25a5e6f29ac4c9b44439185cb9340f9f5.tar.gz bcm5719-llvm-ba8735d25a5e6f29ac4c9b44439185cb9340f9f5.zip |
When discarding SrcValue information, discard all of it so that code
that uses this information knows to behave conservatively.
llvm-svn: 85654
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp')
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index ef1ab2728cd..5f70cb85d92 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -5730,9 +5730,9 @@ bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS, // If this is an EXTLOAD, the VT's must match. if (LLD->getMemoryVT() == RLD->getMemoryVT()) { - // FIXME: this conflates two src values, discarding one. This is not - // the right thing to do, but nothing uses srcvalues now. When they do, - // turn SrcValue into a list of locations. + // FIXME: this discards src value information. This is + // over-conservative. It would be beneficial to be able to remember + // both potential memory locations. SDValue Addr; if (TheSelect->getOpcode() == ISD::SELECT) { // Check that the condition doesn't reach either load. If so, folding @@ -5770,16 +5770,14 @@ bool DAGCombiner::SimplifySelectOps(SDNode *TheSelect, SDValue LHS, Load = DAG.getLoad(TheSelect->getValueType(0), TheSelect->getDebugLoc(), LLD->getChain(), - Addr,LLD->getSrcValue(), - LLD->getSrcValueOffset(), + Addr, 0, 0, LLD->isVolatile(), LLD->getAlignment()); } else { Load = DAG.getExtLoad(LLD->getExtensionType(), TheSelect->getDebugLoc(), TheSelect->getValueType(0), - LLD->getChain(), Addr, LLD->getSrcValue(), - LLD->getSrcValueOffset(), + LLD->getChain(), Addr, 0, 0, LLD->getMemoryVT(), LLD->isVolatile(), LLD->getAlignment()); |