mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge remote-tracking branch 'origin/main' into rebranch
This commit is contained in:
@@ -206,17 +206,17 @@ constantFoldBinaryWithOverflow(BuiltinInst *BI, llvm::Intrinsic::ID ID,
|
||||
const ApplyExpr *CE = Loc.getAsASTNode<ApplyExpr>();
|
||||
SourceRange LHSRange, RHSRange;
|
||||
if (CE) {
|
||||
const auto *Args = dyn_cast_or_null<TupleExpr>(CE->getArg());
|
||||
if (Args && Args->getNumElements() == 2) {
|
||||
const auto *Args = CE->getArgs();
|
||||
if (Args->size() == 2) {
|
||||
// Look through inout types in order to handle += well.
|
||||
CanType LHSTy = Args->getElement(0)->getType()->getInOutObjectType()->
|
||||
CanType LHSTy = Args->getExpr(0)->getType()->getInOutObjectType()->
|
||||
getCanonicalType();
|
||||
CanType RHSTy = Args->getElement(1)->getType()->getCanonicalType();
|
||||
CanType RHSTy = Args->getExpr(1)->getType()->getCanonicalType();
|
||||
if (LHSTy == RHSTy)
|
||||
OpType = Args->getElement(1)->getType();
|
||||
OpType = Args->getExpr(1)->getType();
|
||||
|
||||
LHSRange = Args->getElement(0)->getSourceRange();
|
||||
RHSRange = Args->getElement(1)->getSourceRange();
|
||||
LHSRange = Args->getExpr(0)->getSourceRange();
|
||||
RHSRange = Args->getExpr(1)->getSourceRange();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -778,13 +778,8 @@ constantFoldAndCheckIntegerConversions(BuiltinInst *BI,
|
||||
// Eventually we might be able to use SILLocation (when it contains info
|
||||
// about inlined call chains).
|
||||
if (CE) {
|
||||
if (const TupleType *RTy = CE->getArg()->getType()->getAs<TupleType>()) {
|
||||
if (RTy->getNumElements() == 1) {
|
||||
UserSrcTy = RTy->getElementType(0);
|
||||
UserDstTy = CE->getType();
|
||||
}
|
||||
} else {
|
||||
UserSrcTy = CE->getArg()->getType();
|
||||
if (auto *unaryArg = CE->getArgs()->getUnaryExpr()) {
|
||||
UserSrcTy = unaryArg->getType();
|
||||
UserDstTy = CE->getType();
|
||||
}
|
||||
} else if (auto *ILE = Loc.getAsASTNode<IntegerLiteralExpr>()) {
|
||||
|
||||
Reference in New Issue
Block a user