From f9802446a58e589b86604823b5cfc11884db96df Mon Sep 17 00:00:00 2001 From: Chandler Carruth <chandlerc@gmail.com> Date: Sun, 12 Dec 2010 08:39:38 +0000 Subject: [PATCH] Move and copy function calls around to remove the indirection through gotos from the switch statement. llvm-svn: 121626 --- clang/lib/Sema/SemaOverload.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index abe1a33fd293..5ec7b935b206 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -5543,7 +5543,7 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, if (NumArgs == 1) OpBuilder.addUnaryStarPointerOverloads(); else - goto BinaryStar; + OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); break; case OO_Plus: // '+' is either unary or binary @@ -5551,15 +5551,18 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, OpBuilder.addUnaryPlusPointerOverloads(); OpBuilder.addUnaryPlusOrMinusArithmeticOverloads(); } else { - goto BinaryPlus; + OpBuilder.addBinaryPlusOrMinusPointerOverloads(Op); + OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); } break; case OO_Minus: // '-' is either unary or binary - if (NumArgs == 1) + if (NumArgs == 1) { OpBuilder.addUnaryPlusOrMinusArithmeticOverloads(); - else - goto BinaryMinus; + } else { + OpBuilder.addBinaryPlusOrMinusPointerOverloads(Op); + OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); + } break; case OO_Amp: // '&' is either unary or binary @@ -5609,15 +5612,7 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/true); break; - BinaryPlus: - BinaryMinus: - OpBuilder.addBinaryPlusOrMinusPointerOverloads(Op); - OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false);; - break; - case OO_Slash: - BinaryStar: - Conditional: OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); break; @@ -5672,7 +5667,8 @@ Sema::AddBuiltinOperatorCandidates(OverloadedOperatorKind Op, case OO_Conditional: OpBuilder.addConditionalOperatorOverloads(); - goto Conditional; + OpBuilder.addGenericBinaryArithmeticOverloads(/*isComparison=*/false); + break; } }