summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-10-19 00:04:38 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-10-19 00:04:38 +0000
commit778dc0f1d49230f53401ae0c190fe460bda4ffd1 (patch)
tree52a50a471e9e8e3f7081ae3cf43994be93856d44 /clang/lib/AST/ItaniumMangle.cpp
parent9fdd09a4ccd01feb8e00be22b17e944e46807746 (diff)
downloadbcm5719-llvm-778dc0f1d49230f53401ae0c190fe460bda4ffd1.tar.gz
bcm5719-llvm-778dc0f1d49230f53401ae0c190fe460bda4ffd1.zip
[c++20] Add CXXRewrittenBinaryOperator to represent a comparison
operator that is rewritten as a call to multiple other operators. No functionality change yet: nothing creates these expressions. llvm-svn: 375305
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r--clang/lib/AST/ItaniumMangle.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index 534a92d2cb8..c55a9013757 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -4090,6 +4090,17 @@ recurse:
break;
}
+ case Expr::CXXRewrittenBinaryOperatorClass: {
+ // The mangled form represents the original syntax.
+ CXXRewrittenBinaryOperator::DecomposedForm Decomposed =
+ cast<CXXRewrittenBinaryOperator>(E)->getDecomposedForm();
+ mangleOperatorName(BinaryOperator::getOverloadedOperator(Decomposed.Opcode),
+ /*Arity=*/2);
+ mangleExpression(Decomposed.LHS);
+ mangleExpression(Decomposed.RHS);
+ break;
+ }
+
case Expr::ConditionalOperatorClass: {
const ConditionalOperator *CO = cast<ConditionalOperator>(E);
mangleOperatorName(OO_Conditional, /*Arity=*/3);
OpenPOWER on IntegriCloud