diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 01230a36e744..c61716ba1676 100644 --- a/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -926,7 +926,10 @@ void RegsForValue::getCopyToRegs(SDValue Val, SelectionDAG &DAG,                                            CallConv.getValue(), RegVTs[Value])                                      : RegVTs[Value]; -    if (ExtendKind == ISD::ANY_EXTEND && TLI.isZExtFree(Val, RegisterVT)) +    // We need to zero extend constants that are liveout to match assumptions +    // in FunctionLoweringInfo::ComputePHILiveOutRegInfo. +    if (ExtendKind == ISD::ANY_EXTEND && +        (TLI.isZExtFree(Val, RegisterVT) || isa<ConstantSDNode>(Val)))        ExtendKind = ISD::ZERO_EXTEND;      getCopyToParts(DAG, dl, Val.getValue(Val.getResNo() + Value), &Parts[Part],  | 
