mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-29 13:32:33 +00:00
For better or worse, load from i1 is assumed to be zero extended. Do not
form a load from i1 from larger loads that may not be zext'd. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31933 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f9908172e9
commit
bc4cf8d5b1
@ -2192,7 +2192,12 @@ SDOperand DAGCombiner::visitTRUNCATE(SDNode *N) {
|
||||
return N0.getOperand(0);
|
||||
}
|
||||
// fold (truncate (load x)) -> (smaller load x)
|
||||
if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse()) {
|
||||
if (ISD::isNON_EXTLoad(N0.Val) && N0.hasOneUse() &&
|
||||
// Do not allow folding to i1 here. i1 is implicitly stored in memory in
|
||||
// zero extended form: by shrinking the load, we lose track of the fact
|
||||
// that it is already zero extended.
|
||||
// FIXME: This should be reevaluated.
|
||||
VT != MVT::i1) {
|
||||
assert(MVT::getSizeInBits(N0.getValueType()) > MVT::getSizeInBits(VT) &&
|
||||
"Cannot truncate to larger type!");
|
||||
LoadSDNode *LN0 = cast<LoadSDNode>(N0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user