aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaOverload.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sema/SemaOverload.cpp')
-rw-r--r--lib/Sema/SemaOverload.cpp68
1 files changed, 34 insertions, 34 deletions
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index 7d4507d7f1..69f48d69a8 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -5539,11 +5539,19 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
assert(false && "Expected an overloaded operator");
break;
- case OO_Star: // '*' is either unary or binary
- if (NumArgs == 1)
- OpBuilder.addUnaryStarPointerOverloads();
- else
- OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false);
+ case OO_New:
+ case OO_Delete:
+ case OO_Array_New:
+ case OO_Array_Delete:
+ case OO_Call:
+ assert(false && "Special operators don't use AddBuiltinOperatorCandidates");
+ break;
+
+ case OO_Comma:
+ case OO_Arrow:
+ // C++ [over.match.oper]p3:
+ // -- For the operator ',', the unary operator '&', or the
+ // operator '->', the built-in candidates set is empty.
break;
case OO_Plus: // '+' is either unary or binary
@@ -5560,14 +5568,15 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
}
break;
- case OO_Amp: // '&' is either unary or binary
+ case OO_Star: // '*' is either unary or binary
if (NumArgs == 1)
- // C++ [over.match.oper]p3:
- // -- For the operator ',', the unary operator '&', or the
- // operator '->', the built-in candidates set is empty.
- break;
+ OpBuilder.addUnaryStarPointerOverloads();
+ else
+ OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false);
+ break;
- OpBuilder.addBinaryBitwiseArithmeticOverloads(Op);
+ case OO_Slash:
+ OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false);
break;
case OO_PlusPlus:
@@ -5576,25 +5585,6 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
OpBuilder.addPlusPlusMinusMinusPointerOverloads();
break;
- case OO_Tilde:
- OpBuilder.addUnaryTildePromotedIntegralOverloads();
- break;
-
- case OO_New:
- case OO_Delete:
- case OO_Array_New:
- case OO_Array_Delete:
- case OO_Call:
- assert(false && "Special operators don't use AddBuiltinOperatorCandidates");
- break;
-
- case OO_Comma:
- case OO_Arrow:
- // C++ [over.match.oper]p3:
- // -- For the operator ',', the unary operator '&', or the
- // operator '->', the built-in candidates set is empty.
- break;
-
case OO_EqualEqual:
case OO_ExclaimEqual:
OpBuilder.addEqualEqualOrNotEqualMemberPointerOverloads();
@@ -5609,10 +5599,6 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/true);
break;
- case OO_Slash:
- OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false);
- break;
-
case OO_Percent:
case OO_Caret:
case OO_Pipe:
@@ -5621,6 +5607,20 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op,
OpBuilder.addBinaryBitwiseArithmeticOverloads(Op);
break;
+ case OO_Amp: // '&' is either unary or binary
+ if (NumArgs == 1)
+ // C++ [over.match.oper]p3:
+ // -- For the operator ',', the unary operator '&', or the
+ // operator '->', the built-in candidates set is empty.
+ break;
+
+ OpBuilder.addBinaryBitwiseArithmeticOverloads(Op);
+ break;
+
+ case OO_Tilde:
+ OpBuilder.addUnaryTildePromotedIntegralOverloads();
+ break;
+
case OO_Equal:
OpBuilder.addAssignmentMemberPointerOrEnumeralOverloads();
// Fall through.