Author: rsmith Date: Fri Jun 14 13:01:51 2019 New Revision: 363446 URL: http://llvm.org/viewvc/llvm-project?rev=363446&view=rev Log: Use getOperatorSpelling to get the spelling of an overloaded operator rather than duplicating operator name tables in multiple places.
Modified: cfe/trunk/lib/AST/DeclPrinter.cpp cfe/trunk/lib/AST/DeclarationName.cpp cfe/trunk/lib/AST/StmtPrinter.cpp cfe/trunk/lib/Sema/SemaCodeComplete.cpp Modified: cfe/trunk/lib/AST/DeclPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclPrinter.cpp?rev=363446&r1=363445&r2=363446&view=diff ============================================================================== --- cfe/trunk/lib/AST/DeclPrinter.cpp (original) +++ cfe/trunk/lib/AST/DeclPrinter.cpp Fri Jun 14 13:01:51 2019 @@ -1640,14 +1640,8 @@ void DeclPrinter::VisitOMPDeclareReducti if (!D->isInvalidDecl()) { Out << "#pragma omp declare reduction ("; if (D->getDeclName().getNameKind() == DeclarationName::CXXOperatorName) { - static const char *const OperatorNames[NUM_OVERLOADED_OPERATORS] = { - nullptr, -#define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly) \ - Spelling, -#include "clang/Basic/OperatorKinds.def" - }; const char *OpName = - OperatorNames[D->getDeclName().getCXXOverloadedOperator()]; + getOperatorSpelling(D->getDeclName().getCXXOverloadedOperator()); assert(OpName && "not an overloaded operator"); Out << OpName; } else { Modified: cfe/trunk/lib/AST/DeclarationName.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclarationName.cpp?rev=363446&r1=363445&r2=363446&view=diff ============================================================================== --- cfe/trunk/lib/AST/DeclarationName.cpp (original) +++ cfe/trunk/lib/AST/DeclarationName.cpp Fri Jun 14 13:01:51 2019 @@ -161,13 +161,7 @@ void DeclarationName::print(raw_ostream return; case DeclarationName::CXXOperatorName: { - static const char *const OperatorNames[NUM_OVERLOADED_OPERATORS] = { - nullptr, -#define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly) \ - Spelling, -#include "clang/Basic/OperatorKinds.def" - }; - const char *OpName = OperatorNames[getCXXOverloadedOperator()]; + const char *OpName = getOperatorSpelling(getCXXOverloadedOperator()); assert(OpName && "not an overloaded operator"); OS << "operator"; Modified: cfe/trunk/lib/AST/StmtPrinter.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtPrinter.cpp?rev=363446&r1=363445&r2=363446&view=diff ============================================================================== --- cfe/trunk/lib/AST/StmtPrinter.cpp (original) +++ cfe/trunk/lib/AST/StmtPrinter.cpp Fri Jun 14 13:01:51 2019 @@ -1622,21 +1622,14 @@ void StmtPrinter::VisitAtomicExpr(Atomic // C++ void StmtPrinter::VisitCXXOperatorCallExpr(CXXOperatorCallExpr *Node) { - const char *OpStrings[NUM_OVERLOADED_OPERATORS] = { - "", -#define OVERLOADED_OPERATOR(Name,Spelling,Token,Unary,Binary,MemberOnly) \ - Spelling, -#include "clang/Basic/OperatorKinds.def" - }; - OverloadedOperatorKind Kind = Node->getOperator(); if (Kind == OO_PlusPlus || Kind == OO_MinusMinus) { if (Node->getNumArgs() == 1) { - OS << OpStrings[Kind] << ' '; + OS << getOperatorSpelling(Kind) << ' '; PrintExpr(Node->getArg(0)); } else { PrintExpr(Node->getArg(0)); - OS << ' ' << OpStrings[Kind]; + OS << ' ' << getOperatorSpelling(Kind); } } else if (Kind == OO_Arrow) { PrintExpr(Node->getArg(0)); @@ -1656,11 +1649,11 @@ void StmtPrinter::VisitCXXOperatorCallEx PrintExpr(Node->getArg(1)); OS << ']'; } else if (Node->getNumArgs() == 1) { - OS << OpStrings[Kind] << ' '; + OS << getOperatorSpelling(Kind) << ' '; PrintExpr(Node->getArg(0)); } else if (Node->getNumArgs() == 2) { PrintExpr(Node->getArg(0)); - OS << ' ' << OpStrings[Kind] << ' '; + OS << ' ' << getOperatorSpelling(Kind) << ' '; PrintExpr(Node->getArg(1)); } else { llvm_unreachable("unknown overloaded operator"); Modified: cfe/trunk/lib/Sema/SemaCodeComplete.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCodeComplete.cpp?rev=363446&r1=363445&r2=363446&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaCodeComplete.cpp (original) +++ cfe/trunk/lib/Sema/SemaCodeComplete.cpp Fri Jun 14 13:01:51 2019 @@ -5532,9 +5532,10 @@ void Sema::CodeCompleteOperatorName(Scop &ResultBuilder::IsType); Results.EnterNewScope(); - // Add the names of overloadable operators. + // Add the names of overloadable operators. Note that OO_Conditional is not + // actually overloadable. #define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly) \ - if (std::strcmp(Spelling, "?")) \ + if (OO_##Name != OO_Conditional) \ Results.AddResult(Result(Spelling)); #include "clang/Basic/OperatorKinds.def" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits