mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-24 14:20:17 +00:00
[demangler] Add operator precedence
The demangler had no concept of operator precendence, and would parenthesize many more subexpressions than necessary. In particular it would parenthesize primary-expressions, such as '4', which just looks strange. It would also parenthesize '>' expressions, just in case they were inside a template parameter list. This patch fixes both issues. * Add operator precedence to the OpInfo structure, and add a subexpression helper that will parenthesize a lower precedence subexpression. * Add a 'greater-than is greater-than' indicator to the output buffer, so the expression printer knows whether it is immediately inside a template parameter list (and must therefore parenthesize 'expr > expr'). This is a counter, so that ... * Add open and close printers to the output buffer, that increment and decrement the gt-is-gt indicator. * Parenthesize comma operators inside comma-separated lists. (probably a rare case, but still). This dramatically reduces the extraneous parentheses being printed. Reviewed By: dblaikie, bruno Differential Revision: https://reviews.llvm.org/D120905
This commit is contained in:
parent
ec6d621050
commit
b3b4113a23
@ -244,28 +244,60 @@ public:
|
||||
/// has an unexpanded parameter pack below it that may affect this cache.
|
||||
enum class Cache : unsigned char { Yes, No, Unknown, };
|
||||
|
||||
/// Operator precedence for expression nodes. Used to determine required
|
||||
/// parens in expression emission.
|
||||
enum class Prec {
|
||||
Primary,
|
||||
Postfix,
|
||||
Unary,
|
||||
Cast,
|
||||
PtrMem,
|
||||
Multiplicative,
|
||||
Additive,
|
||||
Shift,
|
||||
Spaceship,
|
||||
Relational,
|
||||
Equality,
|
||||
And,
|
||||
Xor,
|
||||
Ior,
|
||||
AndIf,
|
||||
OrIf,
|
||||
Conditional,
|
||||
Assign,
|
||||
Comma,
|
||||
Default,
|
||||
};
|
||||
|
||||
private:
|
||||
Kind K;
|
||||
|
||||
Prec Precedence : 6;
|
||||
|
||||
// FIXME: Make these protected.
|
||||
public:
|
||||
/// Tracks if this node has a component on its right side, in which case we
|
||||
/// need to call printRight.
|
||||
Cache RHSComponentCache;
|
||||
Cache RHSComponentCache : 2;
|
||||
|
||||
/// Track if this node is a (possibly qualified) array type. This can affect
|
||||
/// how we format the output string.
|
||||
Cache ArrayCache;
|
||||
Cache ArrayCache : 2;
|
||||
|
||||
/// Track if this node is a (possibly qualified) function type. This can
|
||||
/// affect how we format the output string.
|
||||
Cache FunctionCache;
|
||||
Cache FunctionCache : 2;
|
||||
|
||||
public:
|
||||
Node(Kind K_, Cache RHSComponentCache_ = Cache::No,
|
||||
Cache ArrayCache_ = Cache::No, Cache FunctionCache_ = Cache::No)
|
||||
: K(K_), RHSComponentCache(RHSComponentCache_), ArrayCache(ArrayCache_),
|
||||
FunctionCache(FunctionCache_) {}
|
||||
Node(Kind K_, Prec Precedence_ = Prec::Primary,
|
||||
Cache RHSComponentCache_ = Cache::No, Cache ArrayCache_ = Cache::No,
|
||||
Cache FunctionCache_ = Cache::No)
|
||||
: K(K_), Precedence(Precedence_), RHSComponentCache(RHSComponentCache_),
|
||||
ArrayCache(ArrayCache_), FunctionCache(FunctionCache_) {}
|
||||
Node(Kind K_, Cache RHSComponentCache_, Cache ArrayCache_ = Cache::No,
|
||||
Cache FunctionCache_ = Cache::No)
|
||||
: Node(K_, Prec::Primary, RHSComponentCache_, ArrayCache_,
|
||||
FunctionCache_) {}
|
||||
|
||||
/// Visit the most-derived object corresponding to this object.
|
||||
template<typename Fn> void visit(Fn F) const;
|
||||
@ -296,6 +328,8 @@ public:
|
||||
|
||||
Kind getKind() const { return K; }
|
||||
|
||||
Prec getPrecedence() const { return Precedence; }
|
||||
|
||||
virtual bool hasRHSComponentSlow(OutputBuffer &) const { return false; }
|
||||
virtual bool hasArraySlow(OutputBuffer &) const { return false; }
|
||||
virtual bool hasFunctionSlow(OutputBuffer &) const { return false; }
|
||||
@ -304,6 +338,19 @@ public:
|
||||
// get at a node that actually represents some concrete syntax.
|
||||
virtual const Node *getSyntaxNode(OutputBuffer &) const { return this; }
|
||||
|
||||
// Print this node as an expression operand, surrounding it in parentheses if
|
||||
// its precedence is [Strictly] weaker than P.
|
||||
void printAsOperand(OutputBuffer &OB, Prec P = Prec::Default,
|
||||
bool StrictlyWorse = false) const {
|
||||
bool Paren =
|
||||
unsigned(getPrecedence()) >= unsigned(P) + unsigned(StrictlyWorse);
|
||||
if (Paren)
|
||||
OB.printOpen();
|
||||
print(OB);
|
||||
if (Paren)
|
||||
OB.printClose();
|
||||
}
|
||||
|
||||
void print(OutputBuffer &OB) const {
|
||||
printLeft(OB);
|
||||
if (RHSComponentCache != Cache::No)
|
||||
@ -353,7 +400,7 @@ public:
|
||||
if (!FirstElement)
|
||||
OB += ", ";
|
||||
size_t AfterComma = OB.getCurrentPosition();
|
||||
Elements[Idx]->print(OB);
|
||||
Elements[Idx]->printAsOperand(OB, Node::Prec::Comma);
|
||||
|
||||
// Elements[Idx] is an empty parameter pack expansion, we should erase the
|
||||
// comma we just printed.
|
||||
@ -812,9 +859,9 @@ public:
|
||||
}
|
||||
|
||||
void printRight(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Params.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
Ret->printRight(OB);
|
||||
|
||||
if (CVQuals & QualConst)
|
||||
@ -844,9 +891,10 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(E); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "noexcept(";
|
||||
E->print(OB);
|
||||
OB += ")";
|
||||
OB += "noexcept";
|
||||
OB.printOpen();
|
||||
E->printAsOperand(OB);
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -859,9 +907,10 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Types); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "throw(";
|
||||
OB += "throw";
|
||||
OB.printOpen();
|
||||
Types.printWithComma(OB);
|
||||
OB += ')';
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -907,9 +956,9 @@ public:
|
||||
}
|
||||
|
||||
void printRight(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Params.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
if (Ret)
|
||||
Ret->printRight(OB);
|
||||
|
||||
@ -1211,6 +1260,7 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Name, Params); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "template<";
|
||||
Params.printWithComma(OB);
|
||||
OB += "> typename ";
|
||||
@ -1388,6 +1438,7 @@ public:
|
||||
NodeArray getParams() { return Params; }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "<";
|
||||
Params.printWithComma(OB);
|
||||
if (OB.back() == '>')
|
||||
@ -1685,13 +1736,14 @@ public:
|
||||
|
||||
void printDeclarator(OutputBuffer &OB) const {
|
||||
if (!TemplateParams.empty()) {
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "<";
|
||||
TemplateParams.printWithComma(OB);
|
||||
OB += ">";
|
||||
}
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Params.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
@ -1711,9 +1763,9 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Bindings); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += '[';
|
||||
OB.printOpen('[');
|
||||
Bindings.printWithComma(OB);
|
||||
OB += ']';
|
||||
OB.printClose(']');
|
||||
}
|
||||
};
|
||||
|
||||
@ -1725,28 +1777,28 @@ class BinaryExpr : public Node {
|
||||
const Node *RHS;
|
||||
|
||||
public:
|
||||
BinaryExpr(const Node *LHS_, StringView InfixOperator_, const Node *RHS_)
|
||||
: Node(KBinaryExpr), LHS(LHS_), InfixOperator(InfixOperator_), RHS(RHS_) {
|
||||
}
|
||||
BinaryExpr(const Node *LHS_, StringView InfixOperator_, const Node *RHS_,
|
||||
Prec Prec_)
|
||||
: Node(KBinaryExpr, Prec_), LHS(LHS_), InfixOperator(InfixOperator_),
|
||||
RHS(RHS_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(LHS, InfixOperator, RHS); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
// might be a template argument expression, then we need to disambiguate
|
||||
// with parens.
|
||||
if (InfixOperator == ">")
|
||||
OB += "(";
|
||||
|
||||
OB += "(";
|
||||
LHS->print(OB);
|
||||
OB += ") ";
|
||||
bool ParenAll = OB.isGtInsideTemplateArgs() && InfixOperator == ">";
|
||||
if (ParenAll)
|
||||
OB.printOpen();
|
||||
// Assignment is right associative, with special LHS precedence.
|
||||
bool IsAssign = getPrecedence() == Prec::Assign;
|
||||
LHS->printAsOperand(OB, IsAssign ? Prec::OrIf : getPrecedence(), !IsAssign);
|
||||
// No space before comma operator
|
||||
if (!(InfixOperator == ","))
|
||||
OB += " ";
|
||||
OB += InfixOperator;
|
||||
OB += " (";
|
||||
RHS->print(OB);
|
||||
OB += ")";
|
||||
|
||||
if (InfixOperator == ">")
|
||||
OB += ")";
|
||||
OB += " ";
|
||||
RHS->printAsOperand(OB, getPrecedence(), IsAssign);
|
||||
if (ParenAll)
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1755,17 +1807,16 @@ class ArraySubscriptExpr : public Node {
|
||||
const Node *Op2;
|
||||
|
||||
public:
|
||||
ArraySubscriptExpr(const Node *Op1_, const Node *Op2_)
|
||||
: Node(KArraySubscriptExpr), Op1(Op1_), Op2(Op2_) {}
|
||||
ArraySubscriptExpr(const Node *Op1_, const Node *Op2_, Prec Prec_)
|
||||
: Node(KArraySubscriptExpr, Prec_), Op1(Op1_), Op2(Op2_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Op1, Op2); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
Op1->print(OB);
|
||||
OB += ")[";
|
||||
Op2->print(OB);
|
||||
OB += "]";
|
||||
Op1->printAsOperand(OB, getPrecedence());
|
||||
OB.printOpen('[');
|
||||
Op2->printAsOperand(OB);
|
||||
OB.printClose(']');
|
||||
}
|
||||
};
|
||||
|
||||
@ -1774,15 +1825,13 @@ class PostfixExpr : public Node {
|
||||
const StringView Operator;
|
||||
|
||||
public:
|
||||
PostfixExpr(const Node *Child_, StringView Operator_)
|
||||
: Node(KPostfixExpr), Child(Child_), Operator(Operator_) {}
|
||||
PostfixExpr(const Node *Child_, StringView Operator_, Prec Prec_)
|
||||
: Node(KPostfixExpr, Prec_), Child(Child_), Operator(Operator_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Child, Operator); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
Child->print(OB);
|
||||
OB += ")";
|
||||
Child->printAsOperand(OB, getPrecedence(), true);
|
||||
OB += Operator;
|
||||
}
|
||||
};
|
||||
@ -1793,19 +1842,18 @@ class ConditionalExpr : public Node {
|
||||
const Node *Else;
|
||||
|
||||
public:
|
||||
ConditionalExpr(const Node *Cond_, const Node *Then_, const Node *Else_)
|
||||
: Node(KConditionalExpr), Cond(Cond_), Then(Then_), Else(Else_) {}
|
||||
ConditionalExpr(const Node *Cond_, const Node *Then_, const Node *Else_,
|
||||
Prec Prec_)
|
||||
: Node(KConditionalExpr, Prec_), Cond(Cond_), Then(Then_), Else(Else_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Cond, Then, Else); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
Cond->print(OB);
|
||||
OB += ") ? (";
|
||||
Then->print(OB);
|
||||
OB += ") : (";
|
||||
Else->print(OB);
|
||||
OB += ")";
|
||||
Cond->printAsOperand(OB, getPrecedence());
|
||||
OB += " ? ";
|
||||
Then->printAsOperand(OB);
|
||||
OB += " : ";
|
||||
Else->printAsOperand(OB, Prec::Assign, true);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1815,21 +1863,15 @@ class MemberExpr : public Node {
|
||||
const Node *RHS;
|
||||
|
||||
public:
|
||||
MemberExpr(const Node *LHS_, StringView Kind_, const Node *RHS_)
|
||||
: Node(KMemberExpr), LHS(LHS_), Kind(Kind_), RHS(RHS_) {}
|
||||
MemberExpr(const Node *LHS_, StringView Kind_, const Node *RHS_, Prec Prec_)
|
||||
: Node(KMemberExpr, Prec_), LHS(LHS_), Kind(Kind_), RHS(RHS_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(LHS, Kind, RHS); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
LHS->print(OB);
|
||||
LHS->printAsOperand(OB, getPrecedence(), true);
|
||||
OB += Kind;
|
||||
// Parenthesize pointer-to-member deference argument.
|
||||
bool IsPtr = Kind.back() == '*';
|
||||
if (IsPtr)
|
||||
OB += '(';
|
||||
RHS->print(OB);
|
||||
if (IsPtr)
|
||||
OB += ')';
|
||||
RHS->printAsOperand(OB, getPrecedence(), false);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1873,15 +1915,16 @@ class EnclosingExpr : public Node {
|
||||
const StringView Postfix;
|
||||
|
||||
public:
|
||||
EnclosingExpr(StringView Prefix_, Node *Infix_, StringView Postfix_)
|
||||
: Node(KEnclosingExpr), Prefix(Prefix_), Infix(Infix_),
|
||||
Postfix(Postfix_) {}
|
||||
EnclosingExpr(StringView Prefix_, Node *Infix_, Prec Prec_ = Prec::Primary)
|
||||
: Node(KEnclosingExpr, Prec_), Prefix(Prefix_), Infix(Infix_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Prefix, Infix, Postfix); }
|
||||
template <typename Fn> void match(Fn F) const { F(Prefix, Infix); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += Prefix;
|
||||
OB.printOpen();
|
||||
Infix->print(OB);
|
||||
OB.printClose();
|
||||
OB += Postfix;
|
||||
}
|
||||
};
|
||||
@ -1893,18 +1936,24 @@ class CastExpr : public Node {
|
||||
const Node *From;
|
||||
|
||||
public:
|
||||
CastExpr(StringView CastKind_, const Node *To_, const Node *From_)
|
||||
: Node(KCastExpr), CastKind(CastKind_), To(To_), From(From_) {}
|
||||
CastExpr(StringView CastKind_, const Node *To_, const Node *From_, Prec Prec_)
|
||||
: Node(KCastExpr, Prec_), CastKind(CastKind_), To(To_), From(From_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(CastKind, To, From); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += CastKind;
|
||||
OB += "<";
|
||||
To->printLeft(OB);
|
||||
OB += ">(";
|
||||
From->printLeft(OB);
|
||||
OB += ")";
|
||||
{
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "<";
|
||||
To->printLeft(OB);
|
||||
if (OB.back() == '>')
|
||||
OB += " ";
|
||||
OB += ">";
|
||||
}
|
||||
OB.printOpen();
|
||||
From->printAsOperand(OB);
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1918,10 +1967,11 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Pack); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "sizeof...(";
|
||||
OB += "sizeof...";
|
||||
OB.printOpen();
|
||||
ParameterPackExpansion PPE(Pack);
|
||||
PPE.printLeft(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1930,16 +1980,16 @@ class CallExpr : public Node {
|
||||
NodeArray Args;
|
||||
|
||||
public:
|
||||
CallExpr(const Node *Callee_, NodeArray Args_)
|
||||
: Node(KCallExpr), Callee(Callee_), Args(Args_) {}
|
||||
CallExpr(const Node *Callee_, NodeArray Args_, Prec Prec_)
|
||||
: Node(KCallExpr, Prec_), Callee(Callee_), Args(Args_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Callee, Args); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
Callee->print(OB);
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Args.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1952,9 +2002,9 @@ class NewExpr : public Node {
|
||||
bool IsArray; // new[] ?
|
||||
public:
|
||||
NewExpr(NodeArray ExprList_, Node *Type_, NodeArray InitList_, bool IsGlobal_,
|
||||
bool IsArray_)
|
||||
: Node(KNewExpr), ExprList(ExprList_), Type(Type_), InitList(InitList_),
|
||||
IsGlobal(IsGlobal_), IsArray(IsArray_) {}
|
||||
bool IsArray_, Prec Prec_)
|
||||
: Node(KNewExpr, Prec_), ExprList(ExprList_), Type(Type_),
|
||||
InitList(InitList_), IsGlobal(IsGlobal_), IsArray(IsArray_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const {
|
||||
F(ExprList, Type, InitList, IsGlobal, IsArray);
|
||||
@ -1967,16 +2017,16 @@ public:
|
||||
if (IsArray)
|
||||
OB += "[]";
|
||||
if (!ExprList.empty()) {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
ExprList.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
OB += ' ';
|
||||
OB += " ";
|
||||
Type->print(OB);
|
||||
if (!InitList.empty()) {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
InitList.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -1987,8 +2037,9 @@ class DeleteExpr : public Node {
|
||||
bool IsArray;
|
||||
|
||||
public:
|
||||
DeleteExpr(Node *Op_, bool IsGlobal_, bool IsArray_)
|
||||
: Node(KDeleteExpr), Op(Op_), IsGlobal(IsGlobal_), IsArray(IsArray_) {}
|
||||
DeleteExpr(Node *Op_, bool IsGlobal_, bool IsArray_, Prec Prec_)
|
||||
: Node(KDeleteExpr, Prec_), Op(Op_), IsGlobal(IsGlobal_),
|
||||
IsArray(IsArray_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Op, IsGlobal, IsArray); }
|
||||
|
||||
@ -2008,16 +2059,14 @@ class PrefixExpr : public Node {
|
||||
Node *Child;
|
||||
|
||||
public:
|
||||
PrefixExpr(StringView Prefix_, Node *Child_)
|
||||
: Node(KPrefixExpr), Prefix(Prefix_), Child(Child_) {}
|
||||
PrefixExpr(StringView Prefix_, Node *Child_, Prec Prec_)
|
||||
: Node(KPrefixExpr, Prec_), Prefix(Prefix_), Child(Child_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Prefix, Child); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += Prefix;
|
||||
OB += "(";
|
||||
Child->print(OB);
|
||||
OB += ")";
|
||||
Child->printAsOperand(OB, getPrecedence());
|
||||
}
|
||||
};
|
||||
|
||||
@ -2040,17 +2089,18 @@ class ConversionExpr : public Node {
|
||||
NodeArray Expressions;
|
||||
|
||||
public:
|
||||
ConversionExpr(const Node *Type_, NodeArray Expressions_)
|
||||
: Node(KConversionExpr), Type(Type_), Expressions(Expressions_) {}
|
||||
ConversionExpr(const Node *Type_, NodeArray Expressions_, Prec Prec_)
|
||||
: Node(KConversionExpr, Prec_), Type(Type_), Expressions(Expressions_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Type, Expressions); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Type->print(OB);
|
||||
OB += ")(";
|
||||
OB.printClose();
|
||||
OB.printOpen();
|
||||
Expressions.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -2061,18 +2111,19 @@ class PointerToMemberConversionExpr : public Node {
|
||||
|
||||
public:
|
||||
PointerToMemberConversionExpr(const Node *Type_, const Node *SubExpr_,
|
||||
StringView Offset_)
|
||||
: Node(KPointerToMemberConversionExpr), Type(Type_), SubExpr(SubExpr_),
|
||||
Offset(Offset_) {}
|
||||
StringView Offset_, Prec Prec_)
|
||||
: Node(KPointerToMemberConversionExpr, Prec_), Type(Type_),
|
||||
SubExpr(SubExpr_), Offset(Offset_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Type, SubExpr, Offset); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Type->print(OB);
|
||||
OB += ")(";
|
||||
OB.printClose();
|
||||
OB.printOpen();
|
||||
SubExpr->print(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -2158,41 +2209,33 @@ public:
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
auto PrintPack = [&] {
|
||||
OB += '(';
|
||||
OB.printOpen();
|
||||
ParameterPackExpansion(Pack).print(OB);
|
||||
OB += ')';
|
||||
OB.printClose();
|
||||
};
|
||||
|
||||
OB += '(';
|
||||
|
||||
if (IsLeftFold) {
|
||||
// init op ... op pack
|
||||
if (Init != nullptr) {
|
||||
Init->print(OB);
|
||||
OB += ' ';
|
||||
OB += OperatorName;
|
||||
OB += ' ';
|
||||
}
|
||||
// ... op pack
|
||||
OB += "... ";
|
||||
OB += OperatorName;
|
||||
OB += ' ';
|
||||
PrintPack();
|
||||
} else { // !IsLeftFold
|
||||
// pack op ...
|
||||
PrintPack();
|
||||
OB += ' ';
|
||||
OB += OperatorName;
|
||||
OB += " ...";
|
||||
// pack op ... op init
|
||||
if (Init != nullptr) {
|
||||
OB += ' ';
|
||||
OB += OperatorName;
|
||||
OB += ' ';
|
||||
Init->print(OB);
|
||||
}
|
||||
OB.printOpen();
|
||||
// Either '[init op ]... op pack' or 'pack op ...[ op init]'
|
||||
// Refactored to '[(init|pack) op ]...[ op (pack|init)]'
|
||||
// Fold expr operands are cast-expressions
|
||||
if (!IsLeftFold || Init != nullptr) {
|
||||
// '(init|pack) op '
|
||||
if (IsLeftFold)
|
||||
Init->printAsOperand(OB, Prec::Cast, true);
|
||||
else
|
||||
PrintPack();
|
||||
OB << " " << OperatorName << " ";
|
||||
}
|
||||
OB += ')';
|
||||
OB << "...";
|
||||
if (IsLeftFold || Init != nullptr) {
|
||||
// ' op (init|pack)'
|
||||
OB << " " << OperatorName << " ";
|
||||
if (IsLeftFold)
|
||||
PrintPack();
|
||||
else
|
||||
Init->printAsOperand(OB, Prec::Cast, true);
|
||||
}
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -2266,9 +2309,9 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Ty, Integer); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB << "(";
|
||||
OB.printOpen();
|
||||
Ty->print(OB);
|
||||
OB << ")";
|
||||
OB.printClose();
|
||||
|
||||
if (Integer[0] == 'n')
|
||||
OB << "-" << Integer.dropFront(1);
|
||||
@ -2289,13 +2332,13 @@ public:
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
if (Type.size() > 3) {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
OB += Type;
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
|
||||
if (Value[0] == 'n') {
|
||||
OB += "-";
|
||||
OB += '-';
|
||||
OB += Value.dropFront(1);
|
||||
} else
|
||||
OB += Value;
|
||||
@ -2526,8 +2569,8 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
|
||||
/// Parse the <expr> production.
|
||||
Node *parseExpr();
|
||||
Node *parsePrefixExpr(StringView Kind);
|
||||
Node *parseBinaryExpr(StringView Kind);
|
||||
Node *parsePrefixExpr(StringView Kind, Node::Prec Prec);
|
||||
Node *parseBinaryExpr(StringView Kind, Node::Prec Prec);
|
||||
Node *parseIntegerLiteral(StringView Lit);
|
||||
Node *parseExprPrimary();
|
||||
template <class Float> Node *parseFloatingLiteral();
|
||||
@ -2535,7 +2578,7 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
Node *parseConversionExpr();
|
||||
Node *parseBracedExpr();
|
||||
Node *parseFoldExpr();
|
||||
Node *parsePointerToMemberConversionExpr();
|
||||
Node *parsePointerToMemberConversionExpr(Node::Prec Prec);
|
||||
Node *parseSubobjectExpr();
|
||||
|
||||
/// Parse the <type> production.
|
||||
@ -2615,11 +2658,13 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
char Enc[2]; // Encoding
|
||||
OIKind Kind; // Kind of operator
|
||||
bool Flag : 1; // Entry-specific flag
|
||||
Node::Prec Prec : 7; // Precedence
|
||||
const char *Name; // Spelling
|
||||
|
||||
public:
|
||||
constexpr OperatorInfo(const char (&E)[3], OIKind K, bool F, const char *N)
|
||||
: Enc{E[0], E[1]}, Kind{K}, Flag{F}, Name{N} {}
|
||||
constexpr OperatorInfo(const char (&E)[3], OIKind K, bool F, Node::Prec P,
|
||||
const char *N)
|
||||
: Enc{E[0], E[1]}, Kind{K}, Flag{F}, Prec{P}, Name{N} {}
|
||||
|
||||
public:
|
||||
bool operator<(const OperatorInfo &Other) const {
|
||||
@ -2647,6 +2692,7 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
StringView getName() const { return Name; }
|
||||
OIKind getKind() const { return Kind; }
|
||||
bool getFlag() const { return Flag; }
|
||||
Node::Prec getPrecedence() const { return Prec; }
|
||||
};
|
||||
const OperatorInfo *parseOperatorEncoding();
|
||||
|
||||
@ -2950,68 +2996,89 @@ const typename AbstractManglingParser<Derived, Alloc>::OperatorInfo *
|
||||
AbstractManglingParser<Derived, Alloc>::parseOperatorEncoding() {
|
||||
static const OperatorInfo Ops[] = {
|
||||
// Keep ordered by encoding
|
||||
{"aN", OperatorInfo::Binary, false, "operator&="},
|
||||
{"aS", OperatorInfo::Binary, false, "operator="},
|
||||
{"aa", OperatorInfo::Binary, false, "operator&&"},
|
||||
{"ad", OperatorInfo::Prefix, false, "operator&"},
|
||||
{"an", OperatorInfo::Binary, false, "operator&"},
|
||||
{"at", OperatorInfo::OfIdOp, /*Type*/ true, "alignof ("},
|
||||
{"aw", OperatorInfo::NameOnly, false, "operator co_await"},
|
||||
{"az", OperatorInfo::OfIdOp, /*Type*/ false, "alignof ("},
|
||||
{"cc", OperatorInfo::NamedCast, false, "const_cast"},
|
||||
{"cl", OperatorInfo::Call, false, "operator()"},
|
||||
{"cm", OperatorInfo::Binary, false, "operator,"},
|
||||
{"co", OperatorInfo::Prefix, false, "operator~"},
|
||||
{"cv", OperatorInfo::CCast, false, "operator"}, // C Cast
|
||||
{"dV", OperatorInfo::Binary, false, "operator/="},
|
||||
{"da", OperatorInfo::Del, /*Ary*/ true, "operator delete[]"},
|
||||
{"dc", OperatorInfo::NamedCast, false, "dynamic_cast"},
|
||||
{"de", OperatorInfo::Prefix, false, "operator*"},
|
||||
{"dl", OperatorInfo::Del, /*Ary*/ false, "operator delete"},
|
||||
{"ds", OperatorInfo::Member, /*Named*/ false, "operator.*"},
|
||||
{"dt", OperatorInfo::Member, /*Named*/ false, "operator."},
|
||||
{"dv", OperatorInfo::Binary, false, "operator/"},
|
||||
{"eO", OperatorInfo::Binary, false, "operator^="},
|
||||
{"eo", OperatorInfo::Binary, false, "operator^"},
|
||||
{"eq", OperatorInfo::Binary, false, "operator=="},
|
||||
{"ge", OperatorInfo::Binary, false, "operator>="},
|
||||
{"gt", OperatorInfo::Binary, false, "operator>"},
|
||||
{"ix", OperatorInfo::Array, false, "operator[]"},
|
||||
{"lS", OperatorInfo::Binary, false, "operator<<="},
|
||||
{"le", OperatorInfo::Binary, false, "operator<="},
|
||||
{"ls", OperatorInfo::Binary, false, "operator<<"},
|
||||
{"lt", OperatorInfo::Binary, false, "operator<"},
|
||||
{"mI", OperatorInfo::Binary, false, "operator-="},
|
||||
{"mL", OperatorInfo::Binary, false, "operator*="},
|
||||
{"mi", OperatorInfo::Binary, false, "operator-"},
|
||||
{"ml", OperatorInfo::Binary, false, "operator*"},
|
||||
{"mm", OperatorInfo::Postfix, false, "operator--"},
|
||||
{"na", OperatorInfo::New, /*Ary*/ true, "operator new[]"},
|
||||
{"ne", OperatorInfo::Binary, false, "operator!="},
|
||||
{"ng", OperatorInfo::Prefix, false, "operator-"},
|
||||
{"nt", OperatorInfo::Prefix, false, "operator!"},
|
||||
{"nw", OperatorInfo::New, /*Ary*/ false, "operator new"},
|
||||
{"oR", OperatorInfo::Binary, false, "operator|="},
|
||||
{"oo", OperatorInfo::Binary, false, "operator||"},
|
||||
{"or", OperatorInfo::Binary, false, "operator|"},
|
||||
{"pL", OperatorInfo::Binary, false, "operator+="},
|
||||
{"pl", OperatorInfo::Binary, false, "operator+"},
|
||||
{"pm", OperatorInfo::Member, /*Named*/ false, "operator->*"},
|
||||
{"pp", OperatorInfo::Postfix, false, "operator++"},
|
||||
{"ps", OperatorInfo::Prefix, false, "operator+"},
|
||||
{"pt", OperatorInfo::Member, /*Named*/ true, "operator->"},
|
||||
{"qu", OperatorInfo::Conditional, false, "operator?"},
|
||||
{"rM", OperatorInfo::Binary, false, "operator%="},
|
||||
{"rS", OperatorInfo::Binary, false, "operator>>="},
|
||||
{"rc", OperatorInfo::NamedCast, false, "reinterpret_cast"},
|
||||
{"rm", OperatorInfo::Binary, false, "operator%"},
|
||||
{"rs", OperatorInfo::Binary, false, "operator>>"},
|
||||
{"sc", OperatorInfo::NamedCast, false, "static_cast"},
|
||||
{"ss", OperatorInfo::Binary, false, "operator<=>"},
|
||||
{"st", OperatorInfo::OfIdOp, /*Type*/ true, "sizeof ("},
|
||||
{"sz", OperatorInfo::OfIdOp, /*Type*/ false, "sizeof ("},
|
||||
{"te", OperatorInfo::OfIdOp, /*Type*/ false, "typeid ("},
|
||||
{"ti", OperatorInfo::OfIdOp, /*Type*/ true, "typeid ("},
|
||||
{"aN", OperatorInfo::Binary, false, Node::Prec::Assign, "operator&="},
|
||||
{"aS", OperatorInfo::Binary, false, Node::Prec::Assign, "operator="},
|
||||
{"aa", OperatorInfo::Binary, false, Node::Prec::AndIf, "operator&&"},
|
||||
{"ad", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator&"},
|
||||
{"an", OperatorInfo::Binary, false, Node::Prec::And, "operator&"},
|
||||
{"at", OperatorInfo::OfIdOp, /*Type*/ true, Node::Prec::Unary,
|
||||
"alignof "},
|
||||
{"aw", OperatorInfo::NameOnly, false, Node::Prec::Primary,
|
||||
"operator co_await"},
|
||||
{"az", OperatorInfo::OfIdOp, /*Type*/ false, Node::Prec::Unary,
|
||||
"alignof "},
|
||||
{"cc", OperatorInfo::NamedCast, false, Node::Prec::Postfix, "const_cast"},
|
||||
{"cl", OperatorInfo::Call, false, Node::Prec::Postfix, "operator()"},
|
||||
{"cm", OperatorInfo::Binary, false, Node::Prec::Comma, "operator,"},
|
||||
{"co", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator~"},
|
||||
{"cv", OperatorInfo::CCast, false, Node::Prec::Cast,
|
||||
"operator"}, // C Cast
|
||||
{"dV", OperatorInfo::Binary, false, Node::Prec::Assign, "operator/="},
|
||||
{"da", OperatorInfo::Del, /*Ary*/ true, Node::Prec::Unary,
|
||||
"operator delete[]"},
|
||||
{"dc", OperatorInfo::NamedCast, false, Node::Prec::Postfix,
|
||||
"dynamic_cast"},
|
||||
{"de", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator*"},
|
||||
{"dl", OperatorInfo::Del, /*Ary*/ false, Node::Prec::Unary,
|
||||
"operator delete"},
|
||||
{"ds", OperatorInfo::Member, /*Named*/ false, Node::Prec::PtrMem,
|
||||
"operator.*"},
|
||||
{"dt", OperatorInfo::Member, /*Named*/ false, Node::Prec::Postfix,
|
||||
"operator."},
|
||||
{"dv", OperatorInfo::Binary, false, Node::Prec::Assign, "operator/"},
|
||||
{"eO", OperatorInfo::Binary, false, Node::Prec::Assign, "operator^="},
|
||||
{"eo", OperatorInfo::Binary, false, Node::Prec::Xor, "operator^"},
|
||||
{"eq", OperatorInfo::Binary, false, Node::Prec::Equality, "operator=="},
|
||||
{"ge", OperatorInfo::Binary, false, Node::Prec::Relational, "operator>="},
|
||||
{"gt", OperatorInfo::Binary, false, Node::Prec::Relational, "operator>"},
|
||||
{"ix", OperatorInfo::Array, false, Node::Prec::Postfix, "operator[]"},
|
||||
{"lS", OperatorInfo::Binary, false, Node::Prec::Assign, "operator<<="},
|
||||
{"le", OperatorInfo::Binary, false, Node::Prec::Relational, "operator<="},
|
||||
{"ls", OperatorInfo::Binary, false, Node::Prec::Shift, "operator<<"},
|
||||
{"lt", OperatorInfo::Binary, false, Node::Prec::Relational, "operator<"},
|
||||
{"mI", OperatorInfo::Binary, false, Node::Prec::Assign, "operator-="},
|
||||
{"mL", OperatorInfo::Binary, false, Node::Prec::Assign, "operator*="},
|
||||
{"mi", OperatorInfo::Binary, false, Node::Prec::Additive, "operator-"},
|
||||
{"ml", OperatorInfo::Binary, false, Node::Prec::Multiplicative,
|
||||
"operator*"},
|
||||
{"mm", OperatorInfo::Postfix, false, Node::Prec::Postfix, "operator--"},
|
||||
{"na", OperatorInfo::New, /*Ary*/ true, Node::Prec::Unary,
|
||||
"operator new[]"},
|
||||
{"ne", OperatorInfo::Binary, false, Node::Prec::Equality, "operator!="},
|
||||
{"ng", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator-"},
|
||||
{"nt", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator!"},
|
||||
{"nw", OperatorInfo::New, /*Ary*/ false, Node::Prec::Unary,
|
||||
"operator new"},
|
||||
{"oR", OperatorInfo::Binary, false, Node::Prec::Assign, "operator|="},
|
||||
{"oo", OperatorInfo::Binary, false, Node::Prec::OrIf, "operator||"},
|
||||
{"or", OperatorInfo::Binary, false, Node::Prec::Ior, "operator|"},
|
||||
{"pL", OperatorInfo::Binary, false, Node::Prec::Assign, "operator+="},
|
||||
{"pl", OperatorInfo::Binary, false, Node::Prec::Additive, "operator+"},
|
||||
{"pm", OperatorInfo::Member, /*Named*/ false, Node::Prec::PtrMem,
|
||||
"operator->*"},
|
||||
{"pp", OperatorInfo::Postfix, false, Node::Prec::Postfix, "operator++"},
|
||||
{"ps", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator+"},
|
||||
{"pt", OperatorInfo::Member, /*Named*/ true, Node::Prec::Postfix,
|
||||
"operator->"},
|
||||
{"qu", OperatorInfo::Conditional, false, Node::Prec::Conditional,
|
||||
"operator?"},
|
||||
{"rM", OperatorInfo::Binary, false, Node::Prec::Assign, "operator%="},
|
||||
{"rS", OperatorInfo::Binary, false, Node::Prec::Assign, "operator>>="},
|
||||
{"rc", OperatorInfo::NamedCast, false, Node::Prec::Postfix,
|
||||
"reinterpret_cast"},
|
||||
{"rm", OperatorInfo::Binary, false, Node::Prec::Multiplicative,
|
||||
"operator%"},
|
||||
{"rs", OperatorInfo::Binary, false, Node::Prec::Shift, "operator>>"},
|
||||
{"sc", OperatorInfo::NamedCast, false, Node::Prec::Postfix,
|
||||
"static_cast"},
|
||||
{"ss", OperatorInfo::Binary, false, Node::Prec::Spaceship, "operator<=>"},
|
||||
{"st", OperatorInfo::OfIdOp, /*Type*/ true, Node::Prec::Unary, "sizeof "},
|
||||
{"sz", OperatorInfo::OfIdOp, /*Type*/ false, Node::Prec::Unary,
|
||||
"sizeof "},
|
||||
{"te", OperatorInfo::OfIdOp, /*Type*/ false, Node::Prec::Postfix,
|
||||
"typeid "},
|
||||
{"ti", OperatorInfo::OfIdOp, /*Type*/ true, Node::Prec::Postfix,
|
||||
"typeid "},
|
||||
};
|
||||
const auto NumOps = sizeof(Ops) / sizeof(Ops[0]);
|
||||
|
||||
@ -3618,7 +3685,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseDecltype() {
|
||||
return nullptr;
|
||||
if (!consumeIf('E'))
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>("decltype(", E, ")");
|
||||
return make<EnclosingExpr>("decltype", E);
|
||||
}
|
||||
|
||||
// <array-type> ::= A <positive dimension number> _ <element type>
|
||||
@ -4105,22 +4172,24 @@ Node *AbstractManglingParser<Derived, Alloc>::parseType() {
|
||||
}
|
||||
|
||||
template <typename Derived, typename Alloc>
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parsePrefixExpr(StringView Kind) {
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parsePrefixExpr(StringView Kind,
|
||||
Node::Prec Prec) {
|
||||
Node *E = getDerived().parseExpr();
|
||||
if (E == nullptr)
|
||||
return nullptr;
|
||||
return make<PrefixExpr>(Kind, E);
|
||||
return make<PrefixExpr>(Kind, E, Prec);
|
||||
}
|
||||
|
||||
template <typename Derived, typename Alloc>
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parseBinaryExpr(StringView Kind) {
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parseBinaryExpr(StringView Kind,
|
||||
Node::Prec Prec) {
|
||||
Node *LHS = getDerived().parseExpr();
|
||||
if (LHS == nullptr)
|
||||
return nullptr;
|
||||
Node *RHS = getDerived().parseExpr();
|
||||
if (RHS == nullptr)
|
||||
return nullptr;
|
||||
return make<BinaryExpr>(LHS, Kind, RHS);
|
||||
return make<BinaryExpr>(LHS, Kind, RHS, Prec);
|
||||
}
|
||||
|
||||
template <typename Derived, typename Alloc>
|
||||
@ -4431,7 +4500,9 @@ Node *AbstractManglingParser<Derived, Alloc>::parseFoldExpr() {
|
||||
//
|
||||
// Not yet in the spec: https://github.com/itanium-cxx-abi/cxx-abi/issues/47
|
||||
template <typename Derived, typename Alloc>
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parsePointerToMemberConversionExpr() {
|
||||
Node *
|
||||
AbstractManglingParser<Derived, Alloc>::parsePointerToMemberConversionExpr(
|
||||
Node::Prec Prec) {
|
||||
Node *Ty = getDerived().parseType();
|
||||
if (!Ty)
|
||||
return nullptr;
|
||||
@ -4441,7 +4512,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parsePointerToMemberConversionExpr
|
||||
StringView Offset = getDerived().parseNumber(true);
|
||||
if (!consumeIf('E'))
|
||||
return nullptr;
|
||||
return make<PointerToMemberConversionExpr>(Ty, Expr, Offset);
|
||||
return make<PointerToMemberConversionExpr>(Ty, Expr, Offset, Prec);
|
||||
}
|
||||
|
||||
// <expression> ::= so <referent type> <expr> [<offset number>] <union-selector>* [p] E
|
||||
@ -4525,18 +4596,18 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
switch (Op->getKind()) {
|
||||
case OperatorInfo::Binary:
|
||||
// Binary operator: lhs @ rhs
|
||||
return getDerived().parseBinaryExpr(Sym);
|
||||
return getDerived().parseBinaryExpr(Sym, Op->getPrecedence());
|
||||
case OperatorInfo::Prefix:
|
||||
// Prefix unary operator: @ expr
|
||||
return getDerived().parsePrefixExpr(Sym);
|
||||
return getDerived().parsePrefixExpr(Sym, Op->getPrecedence());
|
||||
case OperatorInfo::Postfix: {
|
||||
// Postfix unary operator: expr @
|
||||
if (consumeIf('_'))
|
||||
return getDerived().parsePrefixExpr(Sym);
|
||||
return getDerived().parsePrefixExpr(Sym, Op->getPrecedence());
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return nullptr;
|
||||
return make<PostfixExpr>(Ex, Sym);
|
||||
return make<PostfixExpr>(Ex, Sym, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Array: {
|
||||
// Array Index: lhs [ rhs ]
|
||||
@ -4546,7 +4617,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *Index = getDerived().parseExpr();
|
||||
if (Index == nullptr)
|
||||
return nullptr;
|
||||
return make<ArraySubscriptExpr>(Base, Index);
|
||||
return make<ArraySubscriptExpr>(Base, Index, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Member: {
|
||||
// Member access lhs @ rhs
|
||||
@ -4556,7 +4627,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *RHS = getDerived().parseExpr();
|
||||
if (RHS == nullptr)
|
||||
return nullptr;
|
||||
return make<MemberExpr>(LHS, Sym, RHS);
|
||||
return make<MemberExpr>(LHS, Sym, RHS, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::New: {
|
||||
// New
|
||||
@ -4587,14 +4658,15 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
}
|
||||
NodeArray Inits = popTrailingNodeArray(InitsBegin);
|
||||
return make<NewExpr>(ExprList, Ty, Inits, Global,
|
||||
/*IsArray=*/Op->getFlag());
|
||||
/*IsArray=*/Op->getFlag(), Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Del: {
|
||||
// Delete
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return nullptr;
|
||||
return make<DeleteExpr>(Ex, Global, /*IsArray=*/Op->getFlag());
|
||||
return make<DeleteExpr>(Ex, Global, /*IsArray=*/Op->getFlag(),
|
||||
Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Call: {
|
||||
// Function Call
|
||||
@ -4608,7 +4680,8 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
return nullptr;
|
||||
Names.push_back(E);
|
||||
}
|
||||
return make<CallExpr>(Callee, popTrailingNodeArray(ExprsBegin));
|
||||
return make<CallExpr>(Callee, popTrailingNodeArray(ExprsBegin),
|
||||
Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::CCast: {
|
||||
// C Cast: (type)expr
|
||||
@ -4633,7 +4706,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
NodeArray Exprs = popTrailingNodeArray(ExprsBegin);
|
||||
if (!IsMany && Exprs.size() != 1)
|
||||
return nullptr;
|
||||
return make<ConversionExpr>(Ty, Exprs);
|
||||
return make<ConversionExpr>(Ty, Exprs, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Conditional: {
|
||||
// Conditional operator: expr ? expr : expr
|
||||
@ -4646,7 +4719,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *RHS = getDerived().parseExpr();
|
||||
if (RHS == nullptr)
|
||||
return nullptr;
|
||||
return make<ConditionalExpr>(Cond, LHS, RHS);
|
||||
return make<ConditionalExpr>(Cond, LHS, RHS, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::NamedCast: {
|
||||
// Named cast operation, @<type>(expr)
|
||||
@ -4656,7 +4729,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return nullptr;
|
||||
return make<CastExpr>(Sym, Ty, Ex);
|
||||
return make<CastExpr>(Sym, Ty, Ex, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::OfIdOp: {
|
||||
// [sizeof/alignof/typeid] ( <type>|<expr> )
|
||||
@ -4664,7 +4737,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Op->getFlag() ? getDerived().parseType() : getDerived().parseExpr();
|
||||
if (!Arg)
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>(Sym, Arg, ")");
|
||||
return make<EnclosingExpr>(Sym, Arg, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::NameOnly: {
|
||||
// Not valid as an expression operand.
|
||||
@ -4698,12 +4771,12 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
return make<InitListExpr>(nullptr, popTrailingNodeArray(InitsBegin));
|
||||
}
|
||||
if (consumeIf("mc"))
|
||||
return parsePointerToMemberConversionExpr();
|
||||
return parsePointerToMemberConversionExpr(Node::Prec::Unary);
|
||||
if (consumeIf("nx")) {
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return Ex;
|
||||
return make<EnclosingExpr>("noexcept (", Ex, ")");
|
||||
return make<EnclosingExpr>("noexcept ", Ex, Node::Prec::Unary);
|
||||
}
|
||||
if (consumeIf("so"))
|
||||
return parseSubobjectExpr();
|
||||
@ -4723,7 +4796,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *FP = getDerived().parseFunctionParam();
|
||||
if (FP == nullptr)
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>("sizeof... (", FP, ")");
|
||||
return make<EnclosingExpr>("sizeof... ", FP);
|
||||
}
|
||||
if (consumeIf("sP")) {
|
||||
size_t ArgsBegin = Names.size();
|
||||
@ -4736,7 +4809,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
auto *Pack = make<NodeArrayNode>(popTrailingNodeArray(ArgsBegin));
|
||||
if (!Pack)
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>("sizeof... (", Pack, ")");
|
||||
return make<EnclosingExpr>("sizeof... ", Pack);
|
||||
}
|
||||
if (consumeIf("tl")) {
|
||||
Node *Ty = getDerived().parseType();
|
||||
@ -4792,7 +4865,8 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Names.push_back(E);
|
||||
}
|
||||
}
|
||||
return make<CallExpr>(Name, popTrailingNodeArray(ExprsBegin));
|
||||
return make<CallExpr>(Name, popTrailingNodeArray(ExprsBegin),
|
||||
Node::Prec::Postfix);
|
||||
}
|
||||
|
||||
// Only unresolved names remain.
|
||||
|
@ -86,6 +86,21 @@ public:
|
||||
unsigned CurrentPackIndex = std::numeric_limits<unsigned>::max();
|
||||
unsigned CurrentPackMax = std::numeric_limits<unsigned>::max();
|
||||
|
||||
/// When zero, we're printing template args and '>' needs to be parenthesized.
|
||||
/// Use a counter so we can simply increment inside parentheses.
|
||||
unsigned GtIsGt = 1;
|
||||
|
||||
bool isGtInsideTemplateArgs() const { return GtIsGt == 0; }
|
||||
|
||||
void printOpen(char Open = '(') {
|
||||
GtIsGt++;
|
||||
*this += Open;
|
||||
}
|
||||
void printClose(char Close = ')') {
|
||||
GtIsGt--;
|
||||
*this += Close;
|
||||
}
|
||||
|
||||
OutputBuffer &operator+=(StringView R) {
|
||||
if (size_t Size = R.size()) {
|
||||
grow(Size);
|
||||
|
@ -8674,7 +8674,8 @@ const char* cases[][2] =
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC27RewriteObjCProtocolMetaDataEPN5clang16ObjCProtocolDeclEN4llvm9StringRefES5_RSs", "(anonymous namespace)::RewriteObjC::RewriteObjCProtocolMetaData(clang::ObjCProtocolDecl*, llvm::StringRef, llvm::StringRef, std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC28SynthesizeMetaDataIntoBufferERSs", "(anonymous namespace)::RewriteObjC::SynthesizeMetaDataIntoBuffer(std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC26RewriteObjCMethodsMetaDataIPPN5clang14ObjCMethodDeclEEEvT_S6_bN4llvm9StringRefES8_RSs", "void (anonymous namespace)::RewriteObjC::RewriteObjCMethodsMetaData<clang::ObjCMethodDecl**>(clang::ObjCMethodDecl**, clang::ObjCMethodDecl**, bool, llvm::StringRef, llvm::StringRef, std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC26RewriteObjCMethodsMetaDataIN5clang11DeclContext22filtered_decl_iteratorINS2_14ObjCMethodDeclEXadL_ZNKS5_13isClassMethodEvEEEEEEvT_S7_bN4llvm9StringRefES9_RSs", "void (anonymous namespace)::RewriteObjC::RewriteObjCMethodsMetaData<clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &(clang::ObjCMethodDecl::isClassMethod() const)> >(clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &(clang::ObjCMethodDecl::isClassMethod() const)>, clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &(clang::ObjCMethodDecl::isClassMethod() const)>, bool, llvm::StringRef, llvm::StringRef, std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC26RewriteObjCMethodsMetaDataIN5clang11DeclContext22filtered_decl_iteratorINS2_14ObjCMethodDeclEXadL_ZNKS5_13isClassMethodEvEEEEEEvT_S7_bN4llvm9StringRefES9_RSs",
|
||||
"void (anonymous namespace)::RewriteObjC::RewriteObjCMethodsMetaData<clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &clang::ObjCMethodDecl::isClassMethod() const> >(clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &clang::ObjCMethodDecl::isClassMethod() const>, clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &clang::ObjCMethodDecl::isClassMethod() const>, bool, llvm::StringRef, llvm::StringRef, std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC31RewriteObjCProtocolListMetaDataERKN5clang8ObjCListINS1_16ObjCProtocolDeclEEEN4llvm9StringRefES8_RSs", "(anonymous namespace)::RewriteObjC::RewriteObjCProtocolListMetaData(clang::ObjCList<clang::ObjCProtocolDecl> const&, llvm::StringRef, llvm::StringRef, std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC28SynthesizeObjCInternalStructEPN5clang17ObjCInterfaceDeclERSs", "(anonymous namespace)::RewriteObjC::SynthesizeObjCInternalStruct(clang::ObjCInterfaceDecl*, std::string&)"},
|
||||
{"_ZN12_GLOBAL__N_111RewriteObjC17QuoteDoublequotesERSsS1_", "(anonymous namespace)::RewriteObjC::QuoteDoublequotes(std::string&, std::string&)"},
|
||||
@ -8720,7 +8721,7 @@ const char* cases[][2] =
|
||||
{"_ZN4llvm8DenseMapIPN5clang14ObjCMethodDeclESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16FindAndConstructERKS3_", "llvm::DenseMap<clang::ObjCMethodDecl*, std::string, llvm::DenseMapInfo<clang::ObjCMethodDecl*>, llvm::DenseMapInfo<std::string> >::FindAndConstruct(clang::ObjCMethodDecl* const&)"},
|
||||
{"_ZN4llvm8DenseMapIPN5clang14ObjCMethodDeclESsNS_12DenseMapInfoIS3_EENS4_ISsEEE16InsertIntoBucketERKS3_RKSsPSt4pairIS3_SsE", "llvm::DenseMap<clang::ObjCMethodDecl*, std::string, llvm::DenseMapInfo<clang::ObjCMethodDecl*>, llvm::DenseMapInfo<std::string> >::InsertIntoBucket(clang::ObjCMethodDecl* const&, std::string const&, std::pair<clang::ObjCMethodDecl*, std::string>*)"},
|
||||
{"_ZN4llvm8DenseMapIPN5clang14ObjCMethodDeclESsNS_12DenseMapInfoIS3_EENS4_ISsEEE4growEj", "llvm::DenseMap<clang::ObjCMethodDecl*, std::string, llvm::DenseMapInfo<clang::ObjCMethodDecl*>, llvm::DenseMapInfo<std::string> >::grow(unsigned int)"},
|
||||
{"_ZN4llvm15SmallVectorImplIPN5clang14ObjCMethodDeclEE6appendINS1_11DeclContext22filtered_decl_iteratorIS2_XadL_ZNKS2_16isInstanceMethodEvEEEEEEvT_S9_", "void llvm::SmallVectorImpl<clang::ObjCMethodDecl*>::append<clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &(clang::ObjCMethodDecl::isInstanceMethod() const)> >(clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &(clang::ObjCMethodDecl::isInstanceMethod() const)>, clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &(clang::ObjCMethodDecl::isInstanceMethod() const)>)"},
|
||||
{"_ZN4llvm15SmallVectorImplIPN5clang14ObjCMethodDeclEE6appendINS1_11DeclContext22filtered_decl_iteratorIS2_XadL_ZNKS2_16isInstanceMethodEvEEEEEEvT_S9_", "void llvm::SmallVectorImpl<clang::ObjCMethodDecl*>::append<clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &clang::ObjCMethodDecl::isInstanceMethod() const> >(clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &clang::ObjCMethodDecl::isInstanceMethod() const>, clang::DeclContext::filtered_decl_iterator<clang::ObjCMethodDecl, &clang::ObjCMethodDecl::isInstanceMethod() const>)"},
|
||||
{"_ZNK5clang17ObjCInterfaceDecl9ivar_sizeEv", "clang::ObjCInterfaceDecl::ivar_size() const"},
|
||||
{"_ZNSs12_S_constructIN5clang22RopePieceBTreeIteratorEEEPcT_S3_RKSaIcESt20forward_iterator_tag", "char* std::string::_S_construct<clang::RopePieceBTreeIterator>(clang::RopePieceBTreeIterator, clang::RopePieceBTreeIterator, std::allocator<char> const&, std::forward_iterator_tag)"},
|
||||
{"_ZN4llvm8DenseMapIPN5clang9BlockExprESsNS_12DenseMapInfoIS3_EENS4_ISsEEE5clearEv", "llvm::DenseMap<clang::BlockExpr*, std::string, llvm::DenseMapInfo<clang::BlockExpr*>, llvm::DenseMapInfo<std::string> >::clear()"},
|
||||
@ -16005,27 +16006,48 @@ const char* cases[][2] =
|
||||
{"_ZN12_GLOBAL__N_19AsmParser29ParseDirectiveSymbolAttributeEN4llvm12MCSymbolAttrE", "(anonymous namespace)::AsmParser::ParseDirectiveSymbolAttribute(llvm::MCSymbolAttr)"},
|
||||
{"_ZN12_GLOBAL__N_19AsmParser18ParseDirectiveCommEb", "(anonymous namespace)::AsmParser::ParseDirectiveComm(bool)"},
|
||||
{"_Z8MarkUsedPKN4llvm6MCExprE", "MarkUsed(llvm::MCExpr const*)"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParserD1Ev", "(anonymous namespace)::GenericAsmParser::~GenericAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParserD0Ev", "(anonymous namespace)::GenericAsmParser::~GenericAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::GenericAsmParser::Initialize(llvm::MCAsmParser&)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_20ParseDirectiveLEB128ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveLEB128(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_22ParseDirectiveEndMacroENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveEndMacro(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_19ParseDirectiveMacroENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveMacro(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_25ParseDirectiveMacrosOnOffENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveMacrosOnOff(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_29ParseDirectiveCFIRestoreStateENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIRestoreState(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_30ParseDirectiveCFIRememberStateENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIRememberState(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_34ParseDirectiveCFIPersonalityOrLsdaENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIPersonalityOrLsda(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_23ParseDirectiveCFIOffsetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIOffset(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParser29ParseRegisterOrRegisterNumberERxN4llvm5SMLocE", "(anonymous namespace)::GenericAsmParser::ParseRegisterOrRegisterNumber(long long&, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_31ParseDirectiveCFIDefCfaRegisterENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfaRegister(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_29ParseDirectiveCFIDefCfaOffsetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfaOffset(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_23ParseDirectiveCFIDefCfaENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfa(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_24ParseDirectiveCFIEndProcENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIEndProc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_26ParseDirectiveCFIStartProcENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveCFIStartProc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_19ParseDirectiveStabsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveStabs(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_17ParseDirectiveLocENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveLoc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_18ParseDirectiveLineENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveLine(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_18ParseDirectiveFileENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &((anonymous namespace)::GenericAsmParser::ParseDirectiveFile(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParserD1Ev",
|
||||
"(anonymous namespace)::GenericAsmParser::~GenericAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParserD0Ev",
|
||||
"(anonymous namespace)::GenericAsmParser::~GenericAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParser10InitializeERN4llvm11MCAsmParserE",
|
||||
"(anonymous namespace)::GenericAsmParser::Initialize(llvm::MCAsmParser&)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_20ParseDirectiveLEB128ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveLEB128(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_22ParseDirectiveEndMacroENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveEndMacro(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_19ParseDirectiveMacroENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveMacro(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_25ParseDirectiveMacrosOnOffENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveMacrosOnOff(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_29ParseDirectiveCFIRestoreStateENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIRestoreState(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_30ParseDirectiveCFIRememberStateENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIRememberState(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_34ParseDirectiveCFIPersonalityOrLsdaENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIPersonalityOrLsda(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_23ParseDirectiveCFIOffsetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIOffset(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN12_GLOBAL__N_116GenericAsmParser29ParseRegisterOrRegisterNumberERxN4llvm5SMLocE",
|
||||
"(anonymous namespace)::GenericAsmParser::ParseRegisterOrRegisterNumber(long long&, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_31ParseDirectiveCFIDefCfaRegisterENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfaRegister(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_29ParseDirectiveCFIDefCfaOffsetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfaOffset(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_23ParseDirectiveCFIDefCfaENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIDefCfa(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_24ParseDirectiveCFIEndProcENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIEndProc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_26ParseDirectiveCFIStartProcENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveCFIStartProc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_19ParseDirectiveStabsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveStabs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_17ParseDirectiveLocENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveLoc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_18ParseDirectiveLineENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveLine(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_116GenericAsmParserEXadL_ZNS3_18ParseDirectiveFileENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::GenericAsmParser, &(anonymous namespace)::GenericAsmParser::ParseDirectiveFile(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZNSt6vectorIN4llvm8AsmTokenESaIS1_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS1_S3_EERKS1_", "std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> >::_M_insert_aux(__gnu_cxx::__normal_iterator<llvm::AsmToken*, std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> > >, llvm::AsmToken const&)"},
|
||||
{"_ZNSt6vectorIS_IN4llvm8AsmTokenESaIS1_EESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_", "std::vector<std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> >, std::allocator<std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> > > >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> >*, std::vector<std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> >, std::allocator<std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> > > > >, std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> > const&)"},
|
||||
{"_ZNSt6vectorIN4llvm8AsmTokenESaIS1_EEaSERKS3_", "std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> >::operator=(std::vector<llvm::AsmToken, std::allocator<llvm::AsmToken> > const&)"},
|
||||
@ -16036,93 +16058,169 @@ const char* cases[][2] =
|
||||
{"_ZN12_GLOBAL__N_113COFFAsmParserD1Ev", "(anonymous namespace)::COFFAsmParser::~COFFAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_113COFFAsmParserD0Ev", "(anonymous namespace)::COFFAsmParser::~COFFAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_113COFFAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::COFFAsmParser::Initialize(llvm::MCAsmParser&)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_19ParseDirectiveEndefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseDirectiveEndef(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_18ParseDirectiveTypeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseDirectiveType(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_17ParseDirectiveSclENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseDirectiveScl(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_17ParseDirectiveDefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseDirectiveDef(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_24ParseSectionDirectiveBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseSectionDirectiveBSS(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_19ParseDirectiveEndefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveEndef(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_18ParseDirectiveTypeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveType(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_17ParseDirectiveSclENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveScl(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_17ParseDirectiveDefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseDirectiveDef(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_24ParseSectionDirectiveBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseSectionDirectiveBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN12_GLOBAL__N_113COFFAsmParser18ParseSectionSwitchEN4llvm9StringRefEjNS1_11SectionKindE", "(anonymous namespace)::COFFAsmParser::ParseSectionSwitch(llvm::StringRef, unsigned int, llvm::SectionKind)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &((anonymous namespace)::COFFAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_113COFFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::COFFAsmParser, &(anonymous namespace)::COFFAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm21createDarwinAsmParserEv", "llvm::createDarwinAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_115DarwinAsmParserD1Ev", "(anonymous namespace)::DarwinAsmParser::~DarwinAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_115DarwinAsmParserD0Ev", "(anonymous namespace)::DarwinAsmParser::~DarwinAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_115DarwinAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::DarwinAsmParser::Initialize(llvm::MCAsmParser&)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_24ParseSectionDirectiveTLVENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveTLV(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_24ParseSectionDirectiveTLVENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveTLV(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN12_GLOBAL__N_115DarwinAsmParser18ParseSectionSwitchEPKcS2_jjj", "(anonymous namespace)::DarwinAsmParser::ParseSectionSwitch(char const*, char const*, unsigned int, unsigned int, unsigned int)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveThreadInitFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveThreadInitFunc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_26ParseSectionDirectiveTDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveTData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveSymbolStubENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveSymbolStub(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveStaticDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveStaticData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveStaticConstENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveStaticConst(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectivePICSymbolStubENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectivePICSymbolStub(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCSymbolsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCSymbols(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCStringObjectENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCStringObject(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCSelectorStrsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCSelectorStrs(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCProtocolENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCProtocol(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCModuleInfoENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCModuleInfo(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCMethVarTypesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMethVarTypes(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCMethVarNamesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMethVarNames(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectiveObjCMetaClassENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMetaClass(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_36ParseSectionDirectiveObjCMessageRefsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMessageRefs(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCInstanceVarsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCInstanceVars(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCInstMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCInstMeth(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCClsRefsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClsRefs(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCClsMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClsMeth(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectiveObjCClassVarsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClassVars(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCClassNamesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClassNames(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveObjCClassENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClass(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCCategoryENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCategory(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_36ParseSectionDirectiveObjCCatInstMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCatInstMeth(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCCatClsMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCatClsMeth(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_42ParseSectionDirectiveNonLazySymbolPointersENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveNonLazySymbolPointers(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveModTermFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveModTermFunc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveModInitFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveModInitFunc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseSectionDirectiveLiteral8ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral8(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseSectionDirectiveLiteral4ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral4(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveLiteral16ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral16(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_39ParseSectionDirectiveLazySymbolPointersENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLazySymbolPointers(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveFVMLibInit1ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveFVMLibInit1(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveFVMLibInit0ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveFVMLibInit0(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveDyldENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveDyld(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveDestructorENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveDestructor(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_28ParseSectionDirectiveCStringENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveCString(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveConstructorENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConstructor(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveConstDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConstData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_26ParseSectionDirectiveConstENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConst(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_22ParseDirectiveZerofillENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveZerofill(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveTBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveTBSS(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_28ParseDirectiveSecureLogResetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveSecureLogReset(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseDirectiveSecureLogUniqueENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveSecureLogUnique(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_21ParseDirectiveSectionENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveSection(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_24ParseDirectiveDumpOrLoadENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveDumpOrLoad(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseDirectiveSubsectionsViaSymbolsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveSubsectionsViaSymbols(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveLsymENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveLsym(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveDescENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &((anonymous namespace)::DarwinAsmParser::ParseDirectiveDesc(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveThreadInitFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveThreadInitFunc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_26ParseSectionDirectiveTDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveTData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveSymbolStubENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveSymbolStub(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveStaticDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveStaticData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveStaticConstENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveStaticConst(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectivePICSymbolStubENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectivePICSymbolStub(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCSymbolsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCSymbols(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCStringObjectENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCStringObject(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCSelectorStrsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCSelectorStrs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCProtocolENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCProtocol(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCModuleInfoENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCModuleInfo(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCMethVarTypesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMethVarTypes(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCMethVarNamesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMethVarNames(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectiveObjCMetaClassENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMetaClass(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_36ParseSectionDirectiveObjCMessageRefsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCMessageRefs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_37ParseSectionDirectiveObjCInstanceVarsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCInstanceVars(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCInstMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCInstMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCClsRefsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClsRefs(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveObjCClsMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClsMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_34ParseSectionDirectiveObjCClassVarsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClassVars(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCClassNamesENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClassNames(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveObjCClassENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCClass(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_33ParseSectionDirectiveObjCCategoryENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCategory(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_36ParseSectionDirectiveObjCCatInstMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCatInstMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseSectionDirectiveObjCCatClsMethENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveObjCCatClsMeth(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_42ParseSectionDirectiveNonLazySymbolPointersENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveNonLazySymbolPointers(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveModTermFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveModTermFunc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveModInitFuncENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveModInitFunc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseSectionDirectiveLiteral8ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral8(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseSectionDirectiveLiteral4ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral4(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveLiteral16ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLiteral16(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_39ParseSectionDirectiveLazySymbolPointersENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveLazySymbolPointers(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveFVMLibInit1ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveFVMLibInit1(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveFVMLibInit0ENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveFVMLibInit0(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveDyldENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveDyld(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_31ParseSectionDirectiveDestructorENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveDestructor(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_28ParseSectionDirectiveCStringENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveCString(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_32ParseSectionDirectiveConstructorENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConstructor(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_30ParseSectionDirectiveConstDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConstData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_26ParseSectionDirectiveConstENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseSectionDirectiveConst(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_22ParseDirectiveZerofillENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveZerofill(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveTBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveTBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_28ParseDirectiveSecureLogResetENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSecureLogReset(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_29ParseDirectiveSecureLogUniqueENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSecureLogUnique(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_21ParseDirectiveSectionENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSection(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_24ParseDirectiveDumpOrLoadENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveDumpOrLoad(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_35ParseDirectiveSubsectionsViaSymbolsENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveSubsectionsViaSymbols(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveLsymENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveLsym(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_115DarwinAsmParserEXadL_ZNS3_18ParseDirectiveDescENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::DarwinAsmParser, &(anonymous namespace)::DarwinAsmParser::ParseDirectiveDesc(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm18createELFAsmParserEv", "llvm::createELFAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_112ELFAsmParserD1Ev", "(anonymous namespace)::ELFAsmParser::~ELFAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_112ELFAsmParserD0Ev", "(anonymous namespace)::ELFAsmParser::~ELFAsmParser()"},
|
||||
{"_ZN12_GLOBAL__N_112ELFAsmParser10InitializeERN4llvm11MCAsmParserE", "(anonymous namespace)::ELFAsmParser::Initialize(llvm::MCAsmParser&)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_21ParseDirectiveWeakrefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectiveWeakref(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_20ParseDirectiveSymverENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectiveSymver(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_19ParseDirectiveIdentENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectiveIdent(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_18ParseDirectiveTypeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectiveType(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_22ParseDirectivePreviousENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectivePrevious(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_18ParseDirectiveSizeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectiveSize(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_21ParseDirectiveSectionENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseDirectiveSection(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_28ParseSectionDirectiveEhFrameENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveEhFrame(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_21ParseDirectiveWeakrefENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveWeakref(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_20ParseDirectiveSymverENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveSymver(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_19ParseDirectiveIdentENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveIdent(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_18ParseDirectiveTypeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveType(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_22ParseDirectivePreviousENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectivePrevious(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_18ParseDirectiveSizeENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveSize(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_21ParseDirectiveSectionENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseDirectiveSection(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_28ParseSectionDirectiveEhFrameENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveEhFrame(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN12_GLOBAL__N_112ELFAsmParser18ParseSectionSwitchEN4llvm9StringRefEjjNS1_11SectionKindE", "(anonymous namespace)::ELFAsmParser::ParseSectionSwitch(llvm::StringRef, unsigned int, unsigned int, llvm::SectionKind)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_35ParseSectionDirectiveDataRelRoLocalENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRelRoLocal(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_30ParseSectionDirectiveDataRelRoENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRelRo(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_28ParseSectionDirectiveDataRelENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRel(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveTBSS(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_26ParseSectionDirectiveTDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveTData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_27ParseSectionDirectiveRoDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveRoData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_24ParseSectionDirectiveBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveBSS(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_", "bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &((anonymous namespace)::ELFAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc))>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_35ParseSectionDirectiveDataRelRoLocalENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRelRoLocal(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_30ParseSectionDirectiveDataRelRoENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRelRo(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_28ParseSectionDirectiveDataRelENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveDataRel(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveTBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_26ParseSectionDirectiveTDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveTData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_27ParseSectionDirectiveRoDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveRoData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_24ParseSectionDirectiveBSSENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveBSS(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveTextENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveText(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm20MCAsmParserExtension15HandleDirectiveIN12_GLOBAL__N_112ELFAsmParserEXadL_ZNS3_25ParseSectionDirectiveDataENS_9StringRefENS_5SMLocEEEEEbPS0_S4_S5_",
|
||||
"bool llvm::MCAsmParserExtension::HandleDirective<(anonymous namespace)::ELFAsmParser, &(anonymous namespace)::ELFAsmParser::ParseSectionDirectiveData(llvm::StringRef, llvm::SMLoc)>(llvm::MCAsmParserExtension*, llvm::StringRef, llvm::SMLoc)"},
|
||||
{"_ZN4llvm10MCAsmLexerC1Ev", "llvm::MCAsmLexer::MCAsmLexer()"},
|
||||
{"_ZN4llvm10MCAsmLexerC2Ev", "llvm::MCAsmLexer::MCAsmLexer()"},
|
||||
{"_ZN4llvm10MCAsmLexerD0Ev", "llvm::MCAsmLexer::~MCAsmLexer()"},
|
||||
@ -29449,51 +29547,104 @@ const char* cases[][2] =
|
||||
{"_ZL16NotUnderValgrind", "NotUnderValgrind"},
|
||||
{"_ZN8Blizzard6Memory12voidp_returncvPT_IcEEv", "Blizzard::Memory::voidp_return::operator char*<char>()"},
|
||||
{"_Z2f0PU3AS1c", "f0(char AS1*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) <= (4), void>::type*)"},
|
||||
{"_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE", "void Casts::cstyle<4u>(enable_if<(4u) <= ((unsigned int)(4)), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaaT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) && (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaNT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) &= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaST_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) = (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXstT_EvE4typeE", "void Casts::implicit<4u>(enable_if<sizeof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXszT_EvE4typeE", "void Casts::implicit<4u>(enable_if<sizeof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXatT_EvE4typeE", "void Casts::implicit<4u>(enable_if<alignof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXazT_EvE4typeE", "void Casts::implicit<4u>(enable_if<alignof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXcmT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) , (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXcoT_EvE4typeE", "void Casts::implicit<4u>(enable_if<~(4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdeT_EvE4typeE", "void Casts::implicit<4u>(enable_if<*(4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdvT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) / (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdVT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) /= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeoT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) ^ (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeOT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) ^= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeqT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) == (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXgeT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) >= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXgtT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<((4u) > (4)), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXlsT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) << (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXlST_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) <<= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXltT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) < (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmiT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) - (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmIT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) -= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmlT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) * (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmLT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) *= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmmT_EvE4typeE", "void Casts::implicit<4u>(enable_if<(4u)--, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXneT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) != (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXngT_EvE4typeE", "void Casts::implicit<4u>(enable_if<-(4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXntT_EvE4typeE", "void Casts::implicit<4u>(enable_if<!(4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXooT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) || (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXorT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) | (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXoRT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) |= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpmT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<4u->*(4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXplT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) + (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpLT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) += (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXppT_EvE4typeE", "void Casts::implicit<4u>(enable_if<(4u)++, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpsT_EvE4typeE", "void Casts::implicit<4u>(enable_if<+(4u), void>::type*)"},
|
||||
// {"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXptT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) -> (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXquT_Li4ELi5EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) ? (4) : (5), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrmT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) % (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrMT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) %= (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrsT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) >> (4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrST_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) >>= (4), void>::type*)"},
|
||||
{"_Z1fPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP1XS13_S12_S11_S10_SZ_SY_SX_SW_SV_SU_ST_SS_SR_SQ_SP_SO_SN_SM_SL_SK_SJ_SI_SH_SG_SF_SE_SD_SC_SB_SA_S9_S8_S7_S6_S5_S4_S3_S2_S1_S0_S_", "f(X****************************************, X****************************************, X***************************************, X**************************************, X*************************************, X************************************, X***********************************, X**********************************, X*********************************, X********************************, X*******************************, X******************************, X*****************************, X****************************, X***************************, X**************************, X*************************, X************************, X***********************, X**********************, X*********************, X********************, X*******************, X******************, X*****************, X****************, X***************, X**************, X*************, X************, X***********, X**********, X*********, X********, X*******, X******, X*****, X****, X***, X**, X*, X)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u <= 4, void>::type*)"},
|
||||
{"_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE",
|
||||
"void Casts::cstyle<4u>(enable_if<4u <= (unsigned int)(4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaaT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u && 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaNT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u &= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXaST_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u = 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXstT_EvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<sizeof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXszT_EvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<sizeof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXatT_EvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<alignof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXazT_EvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<alignof (4u), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXcmT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<(4u, 4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXplLi1EcmT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<1 + (4u, 4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXcoT_EvE4typeE", "void Casts::implicit<4u>(enable_if<~4u, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdeT_EvE4typeE", "void Casts::implicit<4u>(enable_if<*4u, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdvT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u / 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXdVT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u /= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeoT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u ^ 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeOT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u ^= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXeqT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u == 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXgeT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u >= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXgtT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<(4u > 4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXngorLi0EgtT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<-(0 | 4u > 4), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXlsT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u << 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXlST_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u <<= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXltT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u < 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmiT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u - 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmIT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u -= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmlT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u * 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmLT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u *= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXmmT_EvE4typeE", "void Casts::implicit<4u>(enable_if<4u--, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXneT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u != 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXngT_EvE4typeE", "void Casts::implicit<4u>(enable_if<-4u, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXntT_EvE4typeE", "void Casts::implicit<4u>(enable_if<!4u, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXooT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u || 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXorT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u | 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXoRT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u |= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpmT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u->*4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXplT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u + 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpLT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u += 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXppT_EvE4typeE", "void Casts::implicit<4u>(enable_if<4u++, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXpsT_EvE4typeE", "void Casts::implicit<4u>(enable_if<+4u, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXptT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u->4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXquT_Li4ELi5EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u ? 4 : 5, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrmT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u % 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrMT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u %= 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrsT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u >> 4, void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXrST_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u >>= 4, void>::type*)"},
|
||||
{"_Z1fPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP1XS13_S12_S11_S10_SZ_SY_SX_SW_SV_SU_ST_SS_SR_SQ_SP_SO_SN_SM_SL_SK_SJ_"
|
||||
"SI_SH_SG_SF_SE_SD_SC_SB_SA_S9_S8_S7_S6_S5_S4_S3_S2_S1_S0_S_",
|
||||
"f(X****************************************, X****************************************, "
|
||||
"X***************************************, X**************************************, "
|
||||
"X*************************************, X************************************, "
|
||||
"X***********************************, X**********************************, X*********************************, "
|
||||
"X********************************, X*******************************, X******************************, "
|
||||
"X*****************************, X****************************, X***************************, "
|
||||
"X**************************, X*************************, X************************, X***********************, "
|
||||
"X**********************, X*********************, X********************, X*******************, "
|
||||
"X******************, X*****************, X****************, X***************, X**************, X*************, "
|
||||
"X************, X***********, X**********, X*********, X********, X*******, X******, X*****, X****, X***, X**, "
|
||||
"X*, X)"},
|
||||
{"_ZZN1J1KEvENK1C1FEv", "J::K()::C::F() const"},
|
||||
{"_ZZNVK1J1KEvENK1C1FEv", "J::K() const volatile::C::F() const"},
|
||||
{"_Z1fM1AKFvvE", "f(void (A::*)() const)"},
|
||||
@ -29503,17 +29654,21 @@ const char* cases[][2] =
|
||||
// {"_Z1fM1XRFivEMS_OFivEMS_KOFivE", "f(int (X::*)() &, int (X::*)() &&, int (X::*)() const &&)"},
|
||||
{"_ZN5test12f0ENS_1TILZNS_1xEEEE", "test1::f0(test1::T<test1::x>)"},
|
||||
{"_ZN5test12f1ENS_2t1ILZNS_2f0EfEEE", "test1::f1(test1::t1<test1::f0(float)>)"},
|
||||
{"_ZN5test22f1ENS_2t1IXadL_ZNS_2f0EfEEEE", "test2::f1(test2::t1<&(test2::f0(float))>)"},
|
||||
{"_ZN5test22f1ENS_2t1IXadL_ZNS_2f0EfEEEE", "test2::f1(test2::t1<&test2::f0(float)>)"},
|
||||
{"_ZN5test32f1ENS_2t1ILZ8test3_f0EEE", "test3::f1(test3::t1<test3_f0>)"},
|
||||
{"_ZN5test42f1ENS_2t1IXadL_Z8test4_f0EEEE", "test4::f1(test4::t1<&(test4_f0)>)"},
|
||||
{"_ZN5test42f1ENS_2t1IXadL_Z8test4_f0EEEE", "test4::f1(test4::t1<&test4_f0>)"},
|
||||
{"_ZN5test52f1ENS_2t1ILZ8test5_f0EEE", "test5::f1(test5::t1<test5_f0>)"},
|
||||
{"_ZN5test52f2ENS_2t2ILZ4mainEEE", "test5::f2(test5::t2<main>)"},
|
||||
{"_ZN5test52f2ENS_2t2ILZ4mainEEE", "test5::f2(test5::t2<main>)"},
|
||||
{"_ZN5test62f0ENS_1TIXadL_ZNS_1A3im0EfEEEE", "test6::f0(test6::T<&(test6::A::im0(float))>)"},
|
||||
{"_ZN5test71XIiEC1IdEEPT_PNS_5int_cIXplL_ZNS_4metaIiE5valueEEsrNS6_IS3_EE5valueEE4typeE", "test7::X<int>::X<double>(double*, test7::int_c<(test7::meta<int>::value) + (test7::meta<double>::value)>::type*)"},
|
||||
{"_ZN5test81fIiEEvNS_5int_cIXsrNS_4metaIT_E4typeE5valueEEE", "void test8::f<int>(test8::int_c<test8::meta<int>::type::value>)"},
|
||||
{"_ZN5test91fIiNS_1XEEENS_9supermetaIT_E5applyIT0_E4typeEv", "test9::supermeta<int>::apply<test9::X>::type test9::f<int, test9::X>()"},
|
||||
{"_ZN6test101fIidEENS_1XIT_E10definitionIT0_EES2_S5_", "test10::X<int>::definition<double> test10::f<int, double>(int, double)"},
|
||||
{"_ZN5test62f0ENS_1TIXadL_ZNS_1A3im0EfEEEE", "test6::f0(test6::T<&test6::A::im0(float)>)"},
|
||||
{"_ZN5test71XIiEC1IdEEPT_PNS_5int_cIXplL_ZNS_4metaIiE5valueEEsrNS6_IS3_EE5valueEE4typeE",
|
||||
"test7::X<int>::X<double>(double*, test7::int_c<test7::meta<int>::value + test7::meta<double>::value>::type*)"},
|
||||
{"_ZN5test81fIiEEvNS_5int_cIXsrNS_4metaIT_E4typeE5valueEEE",
|
||||
"void test8::f<int>(test8::int_c<test8::meta<int>::type::value>)"},
|
||||
{"_ZN5test91fIiNS_1XEEENS_9supermetaIT_E5applyIT0_E4typeEv",
|
||||
"test9::supermeta<int>::apply<test9::X>::type test9::f<int, test9::X>()"},
|
||||
{"_ZN6test101fIidEENS_1XIT_E10definitionIT0_EES2_S5_",
|
||||
"test10::X<int>::definition<double> test10::f<int, double>(int, double)"},
|
||||
{"_ZZ2f5vE1a", "f5()::a"},
|
||||
{"_ZZ2f6vE1b", "f6()::b"},
|
||||
{"_ZNV3$_35test9Ev", "$_3::test9() volatile"},
|
||||
@ -29523,37 +29678,47 @@ const char* cases[][2] =
|
||||
{"_ZplRK1YRA100_P1X", "operator+(Y const&, X* (&) [100])"},
|
||||
{"_Z1fno", "f(__int128, unsigned __int128)"},
|
||||
{"_Z1fM1SKFvvE", "f(void (S::*)() const)"},
|
||||
{"_Z3ft7IiEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv", "__enable_if<__is_scalar_type<int>::__value, void>::__type ft7<int>()"},
|
||||
{"_Z3ft7IPvEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv", "__enable_if<__is_scalar_type<void*>::__value, void>::__type ft7<void*>()"},
|
||||
{"_ZN6PR57968__fill_aIiEENS_11__enable_ifIXntsrNS_11__is_scalarIT_EE7__valueEvE6__typeEv", "PR5796::__enable_if<!(PR5796::__is_scalar<int>::__value), void>::__type PR5796::__fill_a<int>()"},
|
||||
{"_ZN11Expressions2f1ILi1EEEvPAplngT_Li2E_i", "void Expressions::f1<1>(int (*) [(-(1)) + (2)])"},
|
||||
{"_ZN11Expressions2f2ILi1EEEvPApsT__i", "void Expressions::f2<1>(int (*) [+(1)])"},
|
||||
{"_ZN11Expressions2f3ILi1EEEvPAplT_T__i", "void Expressions::f3<1>(int (*) [(1) + (1)])"},
|
||||
{"_ZN11Expressions2f4ILi1EEEvPAplplLi2ET_T__i", "void Expressions::f4<1>(int (*) [((2) + (1)) + (1)])"},
|
||||
{"_Z3ft7IiEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv",
|
||||
"__enable_if<__is_scalar_type<int>::__value, void>::__type ft7<int>()"},
|
||||
{"_Z3ft7IPvEN11__enable_ifIXsr16__is_scalar_typeIT_EE7__valueEvE6__typeEv",
|
||||
"__enable_if<__is_scalar_type<void*>::__value, void>::__type ft7<void*>()"},
|
||||
{"_ZN6PR57968__fill_aIiEENS_11__enable_ifIXntsrNS_11__is_scalarIT_EE7__valueEvE6__typeEv",
|
||||
"PR5796::__enable_if<!PR5796::__is_scalar<int>::__value, void>::__type PR5796::__fill_a<int>()"},
|
||||
{"_ZN11Expressions2f1ILi1EEEvPAplngT_Li2E_i", "void Expressions::f1<1>(int (*) [-1 + 2])"},
|
||||
{"_ZN11Expressions2f2ILi1EEEvPApsT__i", "void Expressions::f2<1>(int (*) [+1])"},
|
||||
{"_ZN11Expressions2f3ILi1EEEvPAplT_T__i", "void Expressions::f3<1>(int (*) [1 + 1])"},
|
||||
{"_ZN11Expressions2f4ILi1EEEvPAplplLi2ET_T__i", "void Expressions::f4<1>(int (*) [2 + 1 + 1])"},
|
||||
{"_ZN11Expressions2f4ILi1EEEvPAplLi2EplT_T__i", "void Expressions::f4<1>(int (*) [2 + (1 + 1)])"},
|
||||
{"_ZN3OpsplERKS_", "Ops::operator+(Ops const&)"},
|
||||
{"_ZN6PR58615AllocIcNS_6PolicyINS_1PELb1EEEE8allocateEiPKv", "PR5861::Alloc<char, PR5861::Policy<PR5861::P, true> >::allocate(int, void const*)"},
|
||||
{"_ZN5test01fIdEEvT_RAszcl3ovlcvS1__EE_c", "void test0::f<double>(double, char (&) [sizeof (ovl((double)()))])"},
|
||||
{"_ZN5test01fIiEEvT_RAszcl3ovlcvS1__EE_c", "void test0::f<int>(int, char (&) [sizeof (ovl((int)()))])"},
|
||||
{"_ZN5test01jINS_1AEEEvRAszdtcvT__E6buffer_c", "void test0::j<test0::A>(char (&) [sizeof ((test0::A)().buffer)])"},
|
||||
{"_ZN5test01jINS_1AEEEvRAszdtcvT__E6buffer_c",
|
||||
"void test0::j<test0::A>(char (&) [sizeof (((test0::A)()).buffer)])"},
|
||||
{"_ZN5test11fINS_1XEiEEvT_IT0_E", "void test1::f<test1::X, int>(test1::X<int>)"},
|
||||
{"_ZN5test211read_memberINS_1AEEEDtptcvPT_Li0E6memberERS2_", "decltype((test2::A*)(0)->member) test2::read_member<test2::A>(test2::A&)"},
|
||||
{"_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0EsrNS_5Path1E1pERS2_", "decltype((test3::Derived*)(0)->test3::Path1::p) test3::get_p_1<test3::Derived>(test3::Derived&)"},
|
||||
{"_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0EsrNS_5Path2E1pERS2_", "decltype((test3::Derived*)(0)->test3::Path2::p) test3::get_p_1<test3::Derived>(test3::Derived&)"},
|
||||
{"_ZN5test41gEPNS_3zedIXadL_ZNS_3foo3barEEEEE", "test4::g(test4::zed<&(test4::foo::bar)>*)"},
|
||||
{"_ZN5test51gEPNS_3zedIXadL_ZNS_3foo3barEEEEE", "test5::g(test5::zed<&(test5::foo::bar)>*)"},
|
||||
{"_ZN5test71gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE", "test7::g(test7::zed<&(test7::foo::bar())>*)"},
|
||||
{"_ZN5test211read_memberINS_1AEEEDtptcvPT_Li0E6memberERS2_",
|
||||
"decltype(((test2::A*)(0))->member) test2::read_member<test2::A>(test2::A&)"},
|
||||
{"_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0EsrNS_5Path1E1pERS2_",
|
||||
"decltype(((test3::Derived*)(0))->test3::Path1::p) test3::get_p_1<test3::Derived>(test3::Derived&)"},
|
||||
{"_ZN5test37get_p_1INS_7DerivedEEEDtptcvPT_Li0EsrNS_5Path2E1pERS2_",
|
||||
"decltype(((test3::Derived*)(0))->test3::Path2::p) test3::get_p_1<test3::Derived>(test3::Derived&)"},
|
||||
{"_ZN5test41gEPNS_3zedIXadL_ZNS_3foo3barEEEEE", "test4::g(test4::zed<&test4::foo::bar>*)"},
|
||||
{"_ZN5test51gEPNS_3zedIXadL_ZNS_3foo3barEEEEE", "test5::g(test5::zed<&test5::foo::bar>*)"},
|
||||
{"_ZN5test71gEPNS_3zedIXadL_ZNS_3foo3barEvEEEE", "test7::g(test7::zed<&test7::foo::bar()>*)"},
|
||||
{"_ZN5test91fIiNS_3barEEEvRKNT0_3baz1XE", "void test9::f<int, test9::bar>(test9::bar::baz::X const&)"},
|
||||
{"_ZN6test101fILc3EEEvNS_1SIXquLb0ELc97ET_EEE", "void test10::f<(char)3>(test10::S<(false) ? ((char)97) : ((char)3)>)"},
|
||||
{"_ZN6test101fILc3EEEvNS_1SIXquLb0ELc97ET_EEE", "void test10::f<(char)3>(test10::S<false ? (char)97 : (char)3>)"},
|
||||
{"_ZN6test111fEz", "test11::f(...)"},
|
||||
{"_ZN6test121fENS_1AILt33000EEE", "test12::f(test12::A<(unsigned short)33000>)"},
|
||||
{"_ZN6test151fILi7EEEvNS_1SIXplT_LNS_1EE3EEEE", "void test15::f<7>(test15::S<(7) + ((test15::E)3)>)"},
|
||||
{"_ZN6test174funcINS_1BEEENS_1AIXszclsrT_3fooEEEEv", "test17::A<sizeof (test17::B::foo())> test17::func<test17::B>()"},
|
||||
{"_ZN6test181fINS_1AEEEvNS_1SIXadsrT_plEEE", "void test18::f<test18::A>(test18::S<&(test18::A::operator+)>)"},
|
||||
{"_ZN6test181fINS_1AEEEvNS_1SIXadsrT_anEEE", "void test18::f<test18::A>(test18::S<&(test18::A::operator&)>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_1fIiEEEE", "void test19::g<test19::A>(test19::S<&(test19::A::f<int>)>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_plEEE", "void test19::g<test19::A>(test19::S<&(test19::A::operator+)>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_cviEEE", "void test19::g<test19::A>(test19::S<&(test19::A::operator int)>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_miIdEEEE", "void test19::g<test19::A>(test19::S<&(test19::A::operator-<double>)>)"},
|
||||
{"_ZN6test151fILi7EEEvNS_1SIXplT_LNS_1EE3EEEE", "void test15::f<7>(test15::S<7 + (test15::E)3>)"},
|
||||
{"_ZN6test174funcINS_1BEEENS_1AIXszclsrT_3fooEEEEv",
|
||||
"test17::A<sizeof (test17::B::foo())> test17::func<test17::B>()"},
|
||||
{"_ZN6test181fINS_1AEEEvNS_1SIXadsrT_plEEE", "void test18::f<test18::A>(test18::S<&test18::A::operator+>)"},
|
||||
{"_ZN6test181fINS_1AEEEvNS_1SIXadsrT_anEEE", "void test18::f<test18::A>(test18::S<&test18::A::operator&>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_1fIiEEEE", "void test19::g<test19::A>(test19::S<&test19::A::f<int> >)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_plEEE", "void test19::g<test19::A>(test19::S<&test19::A::operator+>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_cviEEE", "void test19::g<test19::A>(test19::S<&test19::A::operator int>)"},
|
||||
{"_ZN6test191gINS_1AEEEvNS_1SIXadsrT_miIdEEEE",
|
||||
"void test19::g<test19::A>(test19::S<&test19::A::operator-<double> >)"},
|
||||
{"_ZN6test205test0IiEEvDTcl1fIPT_ELi0EEE", "void test20::test0<int>(decltype(f<int*>(0)))"},
|
||||
{"_ZN6test2112vla_arg_funcEiPA_i", "test21::vla_arg_func(int, int (*) [])"},
|
||||
{"_ZN6test221fEDn", "test22::f(std::nullptr_t)"},
|
||||
@ -29596,8 +29761,9 @@ const char* cases[][2] =
|
||||
{"_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKSbIS2_St11char_traitsIS2_ESaIS2_EESA_", "__gnu_cxx::__enable_if<__is_char<char>::__value, bool>::__type std::operator==<char>(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"},
|
||||
{"_ZZ10+[Foo bar]E3Baz", "+[Foo bar]::Baz"},
|
||||
{"_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairISsbESt6vectorIS2_SaIS2_EEEC5ERKS4_", "__gnu_cxx::__normal_iterator<std::pair<std::string, bool> const*, std::vector<std::pair<std::string, bool>, std::allocator<std::pair<std::string, bool> > > >::__normal_iterator(std::pair<std::string, bool> const* const&)"},
|
||||
{"_Z1fIiEDTeqfp_LDnEEPT_", "decltype((fp) == (nullptr)) f<int>(int*)"},
|
||||
{"_Z1fIiEDTeqfp1_LDnEEicPT_", "decltype((fp1) == (nullptr)) f<int>(int, char, int*)"},
|
||||
{"_Z1fIiEDTeqfp_LDnEEPT_", "decltype(fp == nullptr) f<int>(int*)"},
|
||||
{"_Z1fIiEDTeqfp1_LDnEEicPT_",
|
||||
"decltype(fp1 == nullptr) f<int>(int, char, int*)"},
|
||||
{"_ZZN1S1fEiiEd0_NKUlvE_clEv", "S::f(int, int)::'lambda'()::operator()() const"},
|
||||
{"_Z3fooPM2ABi", "foo(int AB::**)"},
|
||||
{"_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_", "r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what<G const>, what2<G const>, int (G::*)() const)"},
|
||||
@ -29638,16 +29804,24 @@ const char* cases[][2] =
|
||||
{"_Z1pIJicEEiDp4MerpIXsZT_EJT_EE", "int p<int, char>(Merp<sizeof...(int, char), int>, Merp<sizeof...(int, char), char>)"},
|
||||
|
||||
// Some expression symbols found in clang's test/CodeGenCXX/mangle-exprs.cpp
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE", "void Casts::implicit<4u>(enable_if<(4u) <= (4), void>::type*)"},
|
||||
{"_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE", "void Casts::cstyle<4u>(enable_if<(4u) <= ((unsigned int)(4)), void>::type*)"},
|
||||
{"_ZN5Casts10functionalILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE", "void Casts::functional<4u>(enable_if<(4u) <= ((unsigned int)(4)), void>::type*)"},
|
||||
{"_ZN5Casts7static_ILj4EEEvPN9enable_ifIXleT_scjLi4EEvE4typeE", "void Casts::static_<4u>(enable_if<(4u) <= (static_cast<unsigned int>(4)), void>::type*)"},
|
||||
{"_ZN5Casts12reinterpret_ILj4EiEEvPN9enable_ifIXleT_szrcPT0_Li0EEvE4typeE", "void Casts::reinterpret_<4u, int>(enable_if<(4u) <= (sizeof (reinterpret_cast<int*>(0))), void>::type*)"},
|
||||
{"_ZN5Casts6const_IiXadL_ZNS_1iEEEEEvPN9enable_ifIXleLi0EszccPT_T0_EvE4typeE", "void Casts::const_<int, &(Casts::i)>(enable_if<(0) <= (sizeof (const_cast<int*>(&(Casts::i)))), void>::type*)"},
|
||||
{"_ZN5Casts8dynamic_INS_1SEXadL_ZNS_1sEEEEEvPN9enable_ifIXleLi0EszdcPT_T0_EvE4typeE", "void Casts::dynamic_<Casts::S, &(Casts::s)>(enable_if<(0) <= (sizeof (dynamic_cast<Casts::S*>(&(Casts::s)))), void>::type*)"},
|
||||
{"_ZN5Casts8implicitILj4EEEvPN9enable_ifIXleT_Li4EEvE4typeE",
|
||||
"void Casts::implicit<4u>(enable_if<4u <= 4, void>::type*)"},
|
||||
{"_ZN5Casts6cstyleILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE",
|
||||
"void Casts::cstyle<4u>(enable_if<4u <= (unsigned int)(4), void>::type*)"},
|
||||
{"_ZN5Casts10functionalILj4EEEvPN9enable_ifIXleT_cvjLi4EEvE4typeE",
|
||||
"void Casts::functional<4u>(enable_if<4u <= (unsigned int)(4), void>::type*)"},
|
||||
{"_ZN5Casts7static_ILj4EEEvPN9enable_ifIXleT_scjLi4EEvE4typeE",
|
||||
"void Casts::static_<4u>(enable_if<4u <= static_cast<unsigned int>(4), void>::type*)"},
|
||||
{"_ZN5Casts12reinterpret_ILj4EiEEvPN9enable_ifIXleT_szrcPT0_Li0EEvE4typeE",
|
||||
"void Casts::reinterpret_<4u, int>(enable_if<4u <= sizeof (reinterpret_cast<int*>(0)), void>::type*)"},
|
||||
{"_ZN5Casts6const_IiXadL_ZNS_1iEEEEEvPN9enable_ifIXleLi0EszccPT_T0_EvE4typeE",
|
||||
"void Casts::const_<int, &Casts::i>(enable_if<0 <= sizeof (const_cast<int*>(&Casts::i)), void>::type*)"},
|
||||
{"_ZN5Casts8dynamic_INS_1SEXadL_ZNS_1sEEEEEvPN9enable_ifIXleLi0EszdcPT_T0_EvE4typeE",
|
||||
"void Casts::dynamic_<Casts::S, &Casts::s>(enable_if<0 <= sizeof (dynamic_cast<Casts::S*>(&Casts::s)), "
|
||||
"void>::type*)"},
|
||||
{"_ZN5Casts1fILi6EEENS_1TIXT_EEEv", "Casts::T<6> Casts::f<6>()"},
|
||||
{"_ZN5Casts5auto_IiEEvDTnw_DapicvT__EEE", "void Casts::auto_<int>(decltype(new auto((int)())))"},
|
||||
{"_ZN5Casts7scalar_IiEEvDTcmcvT__Ecvi_EE", "void Casts::scalar_<int>(decltype(((int)()) , ((int)())))"},
|
||||
{"_ZN5Casts7scalar_IiEEvDTcmcvT__Ecvi_EE", "void Casts::scalar_<int>(decltype((int)(), (int)()))"},
|
||||
{"_ZN5test11aIsEEDTcl3foocvT__EEES1_", "decltype(foo((short)())) test1::a<short>(short)"},
|
||||
{"_ZN5test21aIPFfvEEEvT_DTclfL0p_EE", "void test2::a<float (*)()>(float (*)(), decltype(fp()))"},
|
||||
{"_ZN5test21bIPFfvEEEDTclfp_EET_", "decltype(fp()) test2::b<float (*)()>(float (*)())"},
|
||||
@ -29659,7 +29833,8 @@ const char* cases[][2] =
|
||||
{"_ZN5test21hIPFfvEEEvT_DTcvPFDTclfL0p_EEvELi0EE", "void test2::h<float (*)()>(float (*)(), decltype((decltype(fp()) (*)())(0)))"},
|
||||
{"_ZN5test21iIPFfvEEEvDTcvPFDTclfp_EET_ELi0EE", "void test2::i<float (*)()>(decltype((decltype(fp()) (*)(float (*)()))(0)))"},
|
||||
{"_ZZN5test21gIPFfvEEEvT_DTclfL0p_EEE8variable", "void test2::g<float (*)()>(float (*)(), decltype(fp()))::variable"},
|
||||
{"_ZN5test31aINS_1XEMS1_PiEEvT_T0_DTdsfL0p_fL0p0_E", "void test3::a<test3::X, int* test3::X::*>(test3::X, int* test3::X::*, decltype(fp.*(fp0)))"},
|
||||
{"_ZN5test31aINS_1XEMS1_PiEEvT_T0_DTdsfL0p_fL0p0_E",
|
||||
"void test3::a<test3::X, int* test3::X::*>(test3::X, int* test3::X::*, decltype(fp.*fp0))"},
|
||||
{"_ZN5test43tf1INS_1XEEEvDTnw_T_piLi1EEE", "void test4::tf1<test4::X>(decltype(new test4::X(1)))"},
|
||||
{"_ZN5test51aIiEEvDTnxcvT__EE", "void test5::a<int>(decltype(noexcept ((int)())))"},
|
||||
{"_ZN5test62f1IiEEvDTcvT_dtdtL_ZNS_1zEE2ua1iE", "void test6::f1<int>(decltype((int)(test6::z.ua.i)))"},
|
||||
@ -29670,7 +29845,8 @@ const char* cases[][2] =
|
||||
{"_ZN5test62f6IiEEvDTcvT_dtptL_ZNS_2zpEE2ub1iE", "void test6::f6<int>(decltype((int)(test6::zp->ub.i)))"},
|
||||
{"_ZN5test62f7IiEEvDTcvT_dtptL_ZNS_2zpEE1s1iE", "void test6::f7<int>(decltype((int)(test6::zp->s.i)))"},
|
||||
{"_ZN5test62f8IiEEvDTcvT_dtptL_ZNS_2zpEE4uuss1iE", "void test6::f8<int>(decltype((int)(test6::zp->uuss.i)))"},
|
||||
{"_ZN5test73fD2IiEEDTcmcvNS_1DEL_ZNS_1bEEcvT__EES2_", "decltype(((test7::D)(test7::b)) , ((int)())) test7::fD2<int>(int)"},
|
||||
{"_ZN5test73fD2IiEEDTcmcvNS_1DEL_ZNS_1bEEcvT__EES2_",
|
||||
"decltype((test7::D)(test7::b), (int)()) test7::fD2<int>(int)"},
|
||||
{"_ZN5test73fT2IiEEDTcvT__EES1_", "decltype((int)()) test7::fT2<int>(int)"},
|
||||
{"_ZN5test73fT4IiEEDTcvT_Li1EES1_", "decltype((int)(1)) test7::fT4<int>(int)"},
|
||||
{"_ZN5test73fT6INS_1BEEEDTcvT__Li1ELi2EEES2_", "decltype((test7::B)(1, 2)) test7::fT6<test7::B>(test7::B)"},
|
||||
@ -29689,17 +29865,23 @@ const char* cases[][2] =
|
||||
|
||||
// Initializer list expressions
|
||||
{"_ZN5test43tf2INS_1XEEEvDTnw_T_piilLi1EEEE", "void test4::tf2<test4::X>(decltype(new test4::X({1})))"},
|
||||
{"_ZN5test73fA1IiEEDTcmtlNS_1AELi1ELi2EEcvT__EES2_", "decltype((test7::A{1, 2}) , ((int)())) test7::fA1<int>(int)"},
|
||||
{"_ZN5test73fA2IiEEDTcmcvNS_1AEilLi1ELi2EEcvT__EES2_", "decltype(((test7::A)({1, 2})) , ((int)())) test7::fA2<int>(int)"},
|
||||
{"_ZN5test73fB1IiEEDTcmtlNS_1BELi1ELi2EEcvT__EES2_", "decltype((test7::B{1, 2}) , ((int)())) test7::fB1<int>(int)"},
|
||||
{"_ZN5test73fB2IiEEDTcmcvNS_1BEilLi1ELi2EEcvT__EES2_", "decltype(((test7::B)({1, 2})) , ((int)())) test7::fB2<int>(int)"},
|
||||
{"_ZN5test73fC1IiEEDTcmtlNS_1CEilLi1ELi2EEEcvT__EES2_", "decltype((test7::C{{1, 2}}) , ((int)())) test7::fC1<int>(int)"},
|
||||
{"_ZN5test73fC2IiEEDTcmcvNS_1CEilLi1ELi2EEcvT__EES2_", "decltype(((test7::C)({1, 2})) , ((int)())) test7::fC2<int>(int)"},
|
||||
{"_ZN5test73fD1IiEEDTcmtlNS_1DEL_ZNS_1bEEEcvT__EES2_", "decltype((test7::D{test7::b}) , ((int)())) test7::fD1<int>(int)"},
|
||||
{"_ZN5test73fE1IiEEDTcmtlNS_1EELi1ELi2EEcvT__EES2_", "decltype((test7::E{1, 2}) , ((int)())) test7::fE1<int>(int)"},
|
||||
{"_ZN5test73fE2IiEEDTcmcvNS_1EEilLi1ELi2EEcvT__EES2_", "decltype(((test7::E)({1, 2})) , ((int)())) test7::fE2<int>(int)"},
|
||||
{"_ZN5test73fF1IiEEDTcmtlNS_1FEilLi1ELi2EEEcvT__EES2_", "decltype((test7::F{{1, 2}}) , ((int)())) test7::fF1<int>(int)"},
|
||||
{"_ZN5test73fF2IiEEDTcmcvNS_1FEilLi1ELi2EEcvT__EES2_", "decltype(((test7::F)({1, 2})) , ((int)())) test7::fF2<int>(int)"},
|
||||
{"_ZN5test73fA1IiEEDTcmtlNS_1AELi1ELi2EEcvT__EES2_", "decltype(test7::A{1, 2}, (int)()) test7::fA1<int>(int)"},
|
||||
{"_ZN5test73fA2IiEEDTcmcvNS_1AEilLi1ELi2EEcvT__EES2_",
|
||||
"decltype((test7::A)({1, 2}), (int)()) test7::fA2<int>(int)"},
|
||||
{"_ZN5test73fB1IiEEDTcmtlNS_1BELi1ELi2EEcvT__EES2_", "decltype(test7::B{1, 2}, (int)()) test7::fB1<int>(int)"},
|
||||
{"_ZN5test73fB2IiEEDTcmcvNS_1BEilLi1ELi2EEcvT__EES2_",
|
||||
"decltype((test7::B)({1, 2}), (int)()) test7::fB2<int>(int)"},
|
||||
{"_ZN5test73fC1IiEEDTcmtlNS_1CEilLi1ELi2EEEcvT__EES2_", "decltype(test7::C{{1, 2}}, (int)()) test7::fC1<int>(int)"},
|
||||
{"_ZN5test73fC2IiEEDTcmcvNS_1CEilLi1ELi2EEcvT__EES2_",
|
||||
"decltype((test7::C)({1, 2}), (int)()) test7::fC2<int>(int)"},
|
||||
{"_ZN5test73fD1IiEEDTcmtlNS_1DEL_ZNS_1bEEEcvT__EES2_",
|
||||
"decltype(test7::D{test7::b}, (int)()) test7::fD1<int>(int)"},
|
||||
{"_ZN5test73fE1IiEEDTcmtlNS_1EELi1ELi2EEcvT__EES2_", "decltype(test7::E{1, 2}, (int)()) test7::fE1<int>(int)"},
|
||||
{"_ZN5test73fE2IiEEDTcmcvNS_1EEilLi1ELi2EEcvT__EES2_",
|
||||
"decltype((test7::E)({1, 2}), (int)()) test7::fE2<int>(int)"},
|
||||
{"_ZN5test73fF1IiEEDTcmtlNS_1FEilLi1ELi2EEEcvT__EES2_", "decltype(test7::F{{1, 2}}, (int)()) test7::fF1<int>(int)"},
|
||||
{"_ZN5test73fF2IiEEDTcmcvNS_1FEilLi1ELi2EEcvT__EES2_",
|
||||
"decltype((test7::F)({1, 2}), (int)()) test7::fF2<int>(int)"},
|
||||
{"_ZN5test73fT1IiEEDTtlT_EES1_", "decltype(int{}) test7::fT1<int>(int)"},
|
||||
{"_ZN5test73fT3IiEEDTtlT_Li1EEES1_", "decltype(int{1}) test7::fT3<int>(int)"},
|
||||
{"_ZN5test73fT5INS_1BEEEDTtlT_Li1ELi2EEES2_", "decltype(test7::B{1, 2}) test7::fT5<test7::B>(test7::B)"},
|
||||
@ -29753,7 +29935,8 @@ const char* cases[][2] =
|
||||
|
||||
// enable_if attributes:
|
||||
{"_Z1fUa9enable_ifIXLi1EEEv", "f() [enable_if:1]"},
|
||||
{"_ZN5test4IdE1fEUa9enable_ifIXeqfL0p_Li1EEXeqfL0p0_Li2EEEi", "test4<double>::f(int) [enable_if:(fp) == (1), (fp0) == (2)]"},
|
||||
{"_ZN5test4IdE1fEUa9enable_ifIXeqfL0p_Li1EEXeqfL0p0_Li2EEEi",
|
||||
"test4<double>::f(int) [enable_if:fp == 1, fp0 == 2]"},
|
||||
{"_Z3quxUa9enable_ifIXLi1EEXL_Z9TRUEFACTSEEEi", "qux(int) [enable_if:1, TRUEFACTS]"},
|
||||
|
||||
// Conversion operators:
|
||||
@ -29771,7 +29954,10 @@ const char* cases[][2] =
|
||||
{"_Z6foldr1IJLi1ELi2ELi3EEEv1AIXfRplT_Li1EEE", "void foldr1<1, 2, 3>(A<((1, 2, 3) + ... + 1)>)"},
|
||||
{"_Z5foldlIJLi1ELi2ELi3EEEv1AIXflplT_EE", "void foldl<1, 2, 3>(A<(... + (1, 2, 3))>)"},
|
||||
{"_Z5foldrIJLi1ELi2ELi3EEEv1AIXfrplT_EE", "void foldr<1, 2, 3>(A<((1, 2, 3) + ...)>)"},
|
||||
{"_ZN7PartialIJLi1ELi2EEE5foldrIJLi3ELi4EEEEv1AIXplLi1EplLi2EfRplT_plLi1EplLi2EfrplT_EE", "void Partial<1, 2>::foldr<3, 4>(A<(1) + ((2) + (((3, 4) + ... + (1) + ((2) + (((3, 4) + ...))))))>)"},
|
||||
{"_ZN7PartialIJLi1ELi2EEE5foldrIJLi3ELi4EEEEv1AIXplLi1EplLi2EfRplT_plLi1EplLi2EfrplT_EE",
|
||||
"void Partial<1, 2>::foldr<3, 4>(A<1 + (2 + ((3, 4) + ... + (1 + (2 + ((3, 4) + ...)))))>)"},
|
||||
{"_ZN7PartialIJLi1ELi2EEE5foldrIJLi3ELi4EEEEv1AIXplplLi1ELi2EfRplT_plplLi1ELi2EflplT_EE",
|
||||
"void Partial<1, 2>::foldr<3, 4>(A<1 + 2 + ((3, 4) + ... + (1 + 2 + (... + (3, 4))))>)"},
|
||||
|
||||
// reference collapsing:
|
||||
{"_Z1fIR1SEiOT_", "int f<S&>(S&)"},
|
||||
@ -29826,14 +30012,14 @@ const char* cases[][2] =
|
||||
{"_Z1fIXtl1BLPi0ELi1EEEEvv", "void f<B{(int*)0, 1}>()"},
|
||||
{"_Z1fIXtl1BLPi32EEEEvv", "void f<B{(int*)32}>()"},
|
||||
{"_Z1fIXtl1BrcPiLi0EEEEvv", "void f<B{reinterpret_cast<int*>(0)}>()"},
|
||||
{"_Z1fIXtl1BadsoiL_Z6nestedE_EEEEvv", "void f<B{&(nested.<int at offset 0>)}>()"},
|
||||
{"_Z1fIXtl1BadsoiL_Z6nestedE16_0pEEEEvv", "void f<B{&(nested.<int at offset 16>)}>()"},
|
||||
{"_Z1fIXtl1BadsoiL_Z6nestedE_EEEEvv", "void f<B{&nested.<int at offset 0>}>()"},
|
||||
{"_Z1fIXtl1BadsoiL_Z6nestedE16_0pEEEEvv", "void f<B{&nested.<int at offset 16>}>()"},
|
||||
{"_Z1fIXtl2BRsoiL_Z7derivedE4EEEEvv", "void f<BR{derived.<int at offset 4>}>()"},
|
||||
{"_Z1fIXtl1BcvPiplcvPcadL_Z7derivedELl16EEEEvv", "void f<B{(int*)(((char*)(&(derived))) + (16l))}>()"},
|
||||
{"_Z1fIXtl1CadsoKiL_Z7derivedE4EEEEvv", "void f<C{&(derived.<int const at offset 4>)}>()"},
|
||||
{"_Z1fIXtl1BcvPiplcvPcadL_Z7derivedELl16EEEEvv", "void f<B{(int*)((char*)(&derived) + 16l)}>()"},
|
||||
{"_Z1fIXtl1CadsoKiL_Z7derivedE4EEEEvv", "void f<C{&derived.<int const at offset 4>}>()"},
|
||||
{"_Z1fIXtl1DLM7DerivedKi0ELi1EEEEvv", "void f<D{(int const Derived::*)0, 1}>()"},
|
||||
// FIXME: This is not valid pointer-to-member syntax.
|
||||
{"_Z1fIXtl1DmcM7DerivedKiadL_ZN11MoreDerived1zEEn8EEEEvv", "void f<D{(int const Derived::*)(&(MoreDerived::z))}>()"},
|
||||
{"_Z1fIXtl1DmcM7DerivedKiadL_ZN11MoreDerived1zEEn8EEEEvv", "void f<D{(int const Derived::*)(&MoreDerived::z)}>()"},
|
||||
{"_Z1fIXtl1Edi1nLi42EEEEvv", "void f<E{.n = 42}>()"},
|
||||
{"_ZTAXtl1StlA32_cLc104ELc101ELc108ELc108ELc111ELc32ELc119ELc111ELc114ELc108ELc100EEEE", "template parameter object for S{char [32]{(char)104, (char)101, (char)108, (char)108, (char)111, (char)32, (char)119, (char)111, (char)114, (char)108, (char)100}}"},
|
||||
|
||||
@ -29897,30 +30083,32 @@ const char* cases[][2] =
|
||||
const unsigned N = sizeof(cases) / sizeof(cases[0]);
|
||||
|
||||
struct FPLiteralCase {
|
||||
const char *mangled;
|
||||
// There are four possible demanglings of a given float.
|
||||
std::string expecting[4];
|
||||
} fp_literal_cases[] =
|
||||
{
|
||||
{"_ZN5test01gIfEEvRAszplcvT__ELf40a00000E_c", {
|
||||
"void test0::g<float>(char (&) [sizeof (((float)()) + (0x1.4p+2f))])",
|
||||
"void test0::g<float>(char (&) [sizeof (((float)()) + (0x2.8p+1f))])",
|
||||
"void test0::g<float>(char (&) [sizeof (((float)()) + (0x5p+0f))])",
|
||||
"void test0::g<float>(char (&) [sizeof (((float)()) + (0xap-1f))])",
|
||||
}},
|
||||
{"_ZN5test01hIfEEvRAszplcvT__ELd4014000000000000E_c", {
|
||||
"void test0::h<float>(char (&) [sizeof (((float)()) + (0x1.4p+2))])",
|
||||
"void test0::h<float>(char (&) [sizeof (((float)()) + (0x2.8p+1))])",
|
||||
"void test0::h<float>(char (&) [sizeof (((float)()) + (0x5p+0))])",
|
||||
"void test0::h<float>(char (&) [sizeof (((float)()) + (0xap-1))])",
|
||||
}},
|
||||
const char* mangled;
|
||||
// There are four possible demanglings of a given float.
|
||||
std::string expecting[4];
|
||||
} fp_literal_cases[] = {
|
||||
{"_ZN5test01gIfEEvRAszplcvT__ELf40a00000E_c",
|
||||
{
|
||||
"void test0::g<float>(char (&) [sizeof ((float)() + 0x1.4p+2f)])",
|
||||
"void test0::g<float>(char (&) [sizeof ((float)() + 0x2.8p+1f)])",
|
||||
"void test0::g<float>(char (&) [sizeof ((float)() + 0x5p+0f)])",
|
||||
"void test0::g<float>(char (&) [sizeof ((float)() + 0xap-1f)])",
|
||||
}},
|
||||
{"_ZN5test01hIfEEvRAszplcvT__ELd4014000000000000E_c",
|
||||
{
|
||||
"void test0::h<float>(char (&) [sizeof ((float)() + 0x1.4p+2)])",
|
||||
"void test0::h<float>(char (&) [sizeof ((float)() + 0x2.8p+1)])",
|
||||
"void test0::h<float>(char (&) [sizeof ((float)() + 0x5p+0)])",
|
||||
"void test0::h<float>(char (&) [sizeof ((float)() + 0xap-1)])",
|
||||
}},
|
||||
#if LDBL_FP80
|
||||
{"_ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c", {
|
||||
"void test0::h<float>(char (&) [(unsigned int)((sizeof (float)) + (0x1.4p+2L))])",
|
||||
"void test0::h<float>(char (&) [(unsigned int)((sizeof (float)) + (0x2.8p+1L))])",
|
||||
"void test0::h<float>(char (&) [(unsigned int)((sizeof (float)) + (0x5p+0L))])",
|
||||
"void test0::h<float>(char (&) [(unsigned int)((sizeof (float)) + (0xap-1L))])",
|
||||
}},
|
||||
{"_ZN5test01hIfEEvRAcvjplstT_Le4001a000000000000000E_c",
|
||||
{
|
||||
"void test0::h<float>(char (&) [(unsigned int)(sizeof (float) + 0x1.4p+2L)])",
|
||||
"void test0::h<float>(char (&) [(unsigned int)(sizeof (float) + 0x2.8p+1L)])",
|
||||
"void test0::h<float>(char (&) [(unsigned int)(sizeof (float) + 0x5p+0L)])",
|
||||
"void test0::h<float>(char (&) [(unsigned int)(sizeof (float) + 0xap-1L)])",
|
||||
}},
|
||||
#endif
|
||||
#if LDBL_FP128
|
||||
// This was found by libFuzzer+HWASan on aarch64 Android.
|
||||
@ -30000,10 +30188,12 @@ void test()
|
||||
__cxxabiv1::__cxa_demangle(cases[i][0], buf, &len, &status);
|
||||
if (!demang || std::strcmp(demang, cases[i][1]) != 0)
|
||||
{
|
||||
std::printf("ERROR demangling %s\nexpected: %s\n",
|
||||
cases[i][0], cases[i][1]);
|
||||
std::printf("Got: %d, %s\n", status, demang ? demang : "(null)");
|
||||
failed = true;
|
||||
std::fprintf(stderr, "ERROR demangling %s\n"
|
||||
"expected: %s\n"
|
||||
"got: %d, %s\n",
|
||||
cases[i][0], cases[i][1], status,
|
||||
demang ? demang : "(null)");
|
||||
failed = true;
|
||||
}
|
||||
if (demang)
|
||||
buf = demang;
|
||||
|
@ -244,28 +244,60 @@ public:
|
||||
/// has an unexpanded parameter pack below it that may affect this cache.
|
||||
enum class Cache : unsigned char { Yes, No, Unknown, };
|
||||
|
||||
/// Operator precedence for expression nodes. Used to determine required
|
||||
/// parens in expression emission.
|
||||
enum class Prec {
|
||||
Primary,
|
||||
Postfix,
|
||||
Unary,
|
||||
Cast,
|
||||
PtrMem,
|
||||
Multiplicative,
|
||||
Additive,
|
||||
Shift,
|
||||
Spaceship,
|
||||
Relational,
|
||||
Equality,
|
||||
And,
|
||||
Xor,
|
||||
Ior,
|
||||
AndIf,
|
||||
OrIf,
|
||||
Conditional,
|
||||
Assign,
|
||||
Comma,
|
||||
Default,
|
||||
};
|
||||
|
||||
private:
|
||||
Kind K;
|
||||
|
||||
Prec Precedence : 6;
|
||||
|
||||
// FIXME: Make these protected.
|
||||
public:
|
||||
/// Tracks if this node has a component on its right side, in which case we
|
||||
/// need to call printRight.
|
||||
Cache RHSComponentCache;
|
||||
Cache RHSComponentCache : 2;
|
||||
|
||||
/// Track if this node is a (possibly qualified) array type. This can affect
|
||||
/// how we format the output string.
|
||||
Cache ArrayCache;
|
||||
Cache ArrayCache : 2;
|
||||
|
||||
/// Track if this node is a (possibly qualified) function type. This can
|
||||
/// affect how we format the output string.
|
||||
Cache FunctionCache;
|
||||
Cache FunctionCache : 2;
|
||||
|
||||
public:
|
||||
Node(Kind K_, Cache RHSComponentCache_ = Cache::No,
|
||||
Cache ArrayCache_ = Cache::No, Cache FunctionCache_ = Cache::No)
|
||||
: K(K_), RHSComponentCache(RHSComponentCache_), ArrayCache(ArrayCache_),
|
||||
FunctionCache(FunctionCache_) {}
|
||||
Node(Kind K_, Prec Precedence_ = Prec::Primary,
|
||||
Cache RHSComponentCache_ = Cache::No, Cache ArrayCache_ = Cache::No,
|
||||
Cache FunctionCache_ = Cache::No)
|
||||
: K(K_), Precedence(Precedence_), RHSComponentCache(RHSComponentCache_),
|
||||
ArrayCache(ArrayCache_), FunctionCache(FunctionCache_) {}
|
||||
Node(Kind K_, Cache RHSComponentCache_, Cache ArrayCache_ = Cache::No,
|
||||
Cache FunctionCache_ = Cache::No)
|
||||
: Node(K_, Prec::Primary, RHSComponentCache_, ArrayCache_,
|
||||
FunctionCache_) {}
|
||||
|
||||
/// Visit the most-derived object corresponding to this object.
|
||||
template<typename Fn> void visit(Fn F) const;
|
||||
@ -296,6 +328,8 @@ public:
|
||||
|
||||
Kind getKind() const { return K; }
|
||||
|
||||
Prec getPrecedence() const { return Precedence; }
|
||||
|
||||
virtual bool hasRHSComponentSlow(OutputBuffer &) const { return false; }
|
||||
virtual bool hasArraySlow(OutputBuffer &) const { return false; }
|
||||
virtual bool hasFunctionSlow(OutputBuffer &) const { return false; }
|
||||
@ -304,6 +338,19 @@ public:
|
||||
// get at a node that actually represents some concrete syntax.
|
||||
virtual const Node *getSyntaxNode(OutputBuffer &) const { return this; }
|
||||
|
||||
// Print this node as an expression operand, surrounding it in parentheses if
|
||||
// its precedence is [Strictly] weaker than P.
|
||||
void printAsOperand(OutputBuffer &OB, Prec P = Prec::Default,
|
||||
bool StrictlyWorse = false) const {
|
||||
bool Paren =
|
||||
unsigned(getPrecedence()) >= unsigned(P) + unsigned(StrictlyWorse);
|
||||
if (Paren)
|
||||
OB.printOpen();
|
||||
print(OB);
|
||||
if (Paren)
|
||||
OB.printClose();
|
||||
}
|
||||
|
||||
void print(OutputBuffer &OB) const {
|
||||
printLeft(OB);
|
||||
if (RHSComponentCache != Cache::No)
|
||||
@ -353,7 +400,7 @@ public:
|
||||
if (!FirstElement)
|
||||
OB += ", ";
|
||||
size_t AfterComma = OB.getCurrentPosition();
|
||||
Elements[Idx]->print(OB);
|
||||
Elements[Idx]->printAsOperand(OB, Node::Prec::Comma);
|
||||
|
||||
// Elements[Idx] is an empty parameter pack expansion, we should erase the
|
||||
// comma we just printed.
|
||||
@ -812,9 +859,9 @@ public:
|
||||
}
|
||||
|
||||
void printRight(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Params.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
Ret->printRight(OB);
|
||||
|
||||
if (CVQuals & QualConst)
|
||||
@ -844,9 +891,10 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(E); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "noexcept(";
|
||||
E->print(OB);
|
||||
OB += ")";
|
||||
OB += "noexcept";
|
||||
OB.printOpen();
|
||||
E->printAsOperand(OB);
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -859,9 +907,10 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Types); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "throw(";
|
||||
OB += "throw";
|
||||
OB.printOpen();
|
||||
Types.printWithComma(OB);
|
||||
OB += ')';
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -907,9 +956,9 @@ public:
|
||||
}
|
||||
|
||||
void printRight(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Params.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
if (Ret)
|
||||
Ret->printRight(OB);
|
||||
|
||||
@ -1211,6 +1260,7 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Name, Params); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "template<";
|
||||
Params.printWithComma(OB);
|
||||
OB += "> typename ";
|
||||
@ -1388,6 +1438,7 @@ public:
|
||||
NodeArray getParams() { return Params; }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "<";
|
||||
Params.printWithComma(OB);
|
||||
if (OB.back() == '>')
|
||||
@ -1685,13 +1736,14 @@ public:
|
||||
|
||||
void printDeclarator(OutputBuffer &OB) const {
|
||||
if (!TemplateParams.empty()) {
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "<";
|
||||
TemplateParams.printWithComma(OB);
|
||||
OB += ">";
|
||||
}
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Params.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
@ -1711,9 +1763,9 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Bindings); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += '[';
|
||||
OB.printOpen('[');
|
||||
Bindings.printWithComma(OB);
|
||||
OB += ']';
|
||||
OB.printClose(']');
|
||||
}
|
||||
};
|
||||
|
||||
@ -1725,28 +1777,28 @@ class BinaryExpr : public Node {
|
||||
const Node *RHS;
|
||||
|
||||
public:
|
||||
BinaryExpr(const Node *LHS_, StringView InfixOperator_, const Node *RHS_)
|
||||
: Node(KBinaryExpr), LHS(LHS_), InfixOperator(InfixOperator_), RHS(RHS_) {
|
||||
}
|
||||
BinaryExpr(const Node *LHS_, StringView InfixOperator_, const Node *RHS_,
|
||||
Prec Prec_)
|
||||
: Node(KBinaryExpr, Prec_), LHS(LHS_), InfixOperator(InfixOperator_),
|
||||
RHS(RHS_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(LHS, InfixOperator, RHS); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
// might be a template argument expression, then we need to disambiguate
|
||||
// with parens.
|
||||
if (InfixOperator == ">")
|
||||
OB += "(";
|
||||
|
||||
OB += "(";
|
||||
LHS->print(OB);
|
||||
OB += ") ";
|
||||
bool ParenAll = OB.isGtInsideTemplateArgs() && InfixOperator == ">";
|
||||
if (ParenAll)
|
||||
OB.printOpen();
|
||||
// Assignment is right associative, with special LHS precedence.
|
||||
bool IsAssign = getPrecedence() == Prec::Assign;
|
||||
LHS->printAsOperand(OB, IsAssign ? Prec::OrIf : getPrecedence(), !IsAssign);
|
||||
// No space before comma operator
|
||||
if (!(InfixOperator == ","))
|
||||
OB += " ";
|
||||
OB += InfixOperator;
|
||||
OB += " (";
|
||||
RHS->print(OB);
|
||||
OB += ")";
|
||||
|
||||
if (InfixOperator == ">")
|
||||
OB += ")";
|
||||
OB += " ";
|
||||
RHS->printAsOperand(OB, getPrecedence(), IsAssign);
|
||||
if (ParenAll)
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1755,17 +1807,16 @@ class ArraySubscriptExpr : public Node {
|
||||
const Node *Op2;
|
||||
|
||||
public:
|
||||
ArraySubscriptExpr(const Node *Op1_, const Node *Op2_)
|
||||
: Node(KArraySubscriptExpr), Op1(Op1_), Op2(Op2_) {}
|
||||
ArraySubscriptExpr(const Node *Op1_, const Node *Op2_, Prec Prec_)
|
||||
: Node(KArraySubscriptExpr, Prec_), Op1(Op1_), Op2(Op2_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Op1, Op2); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
Op1->print(OB);
|
||||
OB += ")[";
|
||||
Op2->print(OB);
|
||||
OB += "]";
|
||||
Op1->printAsOperand(OB, getPrecedence());
|
||||
OB.printOpen('[');
|
||||
Op2->printAsOperand(OB);
|
||||
OB.printClose(']');
|
||||
}
|
||||
};
|
||||
|
||||
@ -1774,15 +1825,13 @@ class PostfixExpr : public Node {
|
||||
const StringView Operator;
|
||||
|
||||
public:
|
||||
PostfixExpr(const Node *Child_, StringView Operator_)
|
||||
: Node(KPostfixExpr), Child(Child_), Operator(Operator_) {}
|
||||
PostfixExpr(const Node *Child_, StringView Operator_, Prec Prec_)
|
||||
: Node(KPostfixExpr, Prec_), Child(Child_), Operator(Operator_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Child, Operator); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
Child->print(OB);
|
||||
OB += ")";
|
||||
Child->printAsOperand(OB, getPrecedence(), true);
|
||||
OB += Operator;
|
||||
}
|
||||
};
|
||||
@ -1793,19 +1842,18 @@ class ConditionalExpr : public Node {
|
||||
const Node *Else;
|
||||
|
||||
public:
|
||||
ConditionalExpr(const Node *Cond_, const Node *Then_, const Node *Else_)
|
||||
: Node(KConditionalExpr), Cond(Cond_), Then(Then_), Else(Else_) {}
|
||||
ConditionalExpr(const Node *Cond_, const Node *Then_, const Node *Else_,
|
||||
Prec Prec_)
|
||||
: Node(KConditionalExpr, Prec_), Cond(Cond_), Then(Then_), Else(Else_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Cond, Then, Else); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
Cond->print(OB);
|
||||
OB += ") ? (";
|
||||
Then->print(OB);
|
||||
OB += ") : (";
|
||||
Else->print(OB);
|
||||
OB += ")";
|
||||
Cond->printAsOperand(OB, getPrecedence());
|
||||
OB += " ? ";
|
||||
Then->printAsOperand(OB);
|
||||
OB += " : ";
|
||||
Else->printAsOperand(OB, Prec::Assign, true);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1815,21 +1863,15 @@ class MemberExpr : public Node {
|
||||
const Node *RHS;
|
||||
|
||||
public:
|
||||
MemberExpr(const Node *LHS_, StringView Kind_, const Node *RHS_)
|
||||
: Node(KMemberExpr), LHS(LHS_), Kind(Kind_), RHS(RHS_) {}
|
||||
MemberExpr(const Node *LHS_, StringView Kind_, const Node *RHS_, Prec Prec_)
|
||||
: Node(KMemberExpr, Prec_), LHS(LHS_), Kind(Kind_), RHS(RHS_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(LHS, Kind, RHS); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
LHS->print(OB);
|
||||
LHS->printAsOperand(OB, getPrecedence(), true);
|
||||
OB += Kind;
|
||||
// Parenthesize pointer-to-member deference argument.
|
||||
bool IsPtr = Kind.back() == '*';
|
||||
if (IsPtr)
|
||||
OB += '(';
|
||||
RHS->print(OB);
|
||||
if (IsPtr)
|
||||
OB += ')';
|
||||
RHS->printAsOperand(OB, getPrecedence(), false);
|
||||
}
|
||||
};
|
||||
|
||||
@ -1873,15 +1915,16 @@ class EnclosingExpr : public Node {
|
||||
const StringView Postfix;
|
||||
|
||||
public:
|
||||
EnclosingExpr(StringView Prefix_, Node *Infix_, StringView Postfix_)
|
||||
: Node(KEnclosingExpr), Prefix(Prefix_), Infix(Infix_),
|
||||
Postfix(Postfix_) {}
|
||||
EnclosingExpr(StringView Prefix_, Node *Infix_, Prec Prec_ = Prec::Primary)
|
||||
: Node(KEnclosingExpr, Prec_), Prefix(Prefix_), Infix(Infix_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Prefix, Infix, Postfix); }
|
||||
template <typename Fn> void match(Fn F) const { F(Prefix, Infix); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += Prefix;
|
||||
OB.printOpen();
|
||||
Infix->print(OB);
|
||||
OB.printClose();
|
||||
OB += Postfix;
|
||||
}
|
||||
};
|
||||
@ -1893,18 +1936,24 @@ class CastExpr : public Node {
|
||||
const Node *From;
|
||||
|
||||
public:
|
||||
CastExpr(StringView CastKind_, const Node *To_, const Node *From_)
|
||||
: Node(KCastExpr), CastKind(CastKind_), To(To_), From(From_) {}
|
||||
CastExpr(StringView CastKind_, const Node *To_, const Node *From_, Prec Prec_)
|
||||
: Node(KCastExpr, Prec_), CastKind(CastKind_), To(To_), From(From_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(CastKind, To, From); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += CastKind;
|
||||
OB += "<";
|
||||
To->printLeft(OB);
|
||||
OB += ">(";
|
||||
From->printLeft(OB);
|
||||
OB += ")";
|
||||
{
|
||||
SwapAndRestore<unsigned> LT(OB.GtIsGt, 0);
|
||||
OB += "<";
|
||||
To->printLeft(OB);
|
||||
if (OB.back() == '>')
|
||||
OB += " ";
|
||||
OB += ">";
|
||||
}
|
||||
OB.printOpen();
|
||||
From->printAsOperand(OB);
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1918,10 +1967,11 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Pack); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "sizeof...(";
|
||||
OB += "sizeof...";
|
||||
OB.printOpen();
|
||||
ParameterPackExpansion PPE(Pack);
|
||||
PPE.printLeft(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1930,16 +1980,16 @@ class CallExpr : public Node {
|
||||
NodeArray Args;
|
||||
|
||||
public:
|
||||
CallExpr(const Node *Callee_, NodeArray Args_)
|
||||
: Node(KCallExpr), Callee(Callee_), Args(Args_) {}
|
||||
CallExpr(const Node *Callee_, NodeArray Args_, Prec Prec_)
|
||||
: Node(KCallExpr, Prec_), Callee(Callee_), Args(Args_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Callee, Args); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
Callee->print(OB);
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Args.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -1952,9 +2002,9 @@ class NewExpr : public Node {
|
||||
bool IsArray; // new[] ?
|
||||
public:
|
||||
NewExpr(NodeArray ExprList_, Node *Type_, NodeArray InitList_, bool IsGlobal_,
|
||||
bool IsArray_)
|
||||
: Node(KNewExpr), ExprList(ExprList_), Type(Type_), InitList(InitList_),
|
||||
IsGlobal(IsGlobal_), IsArray(IsArray_) {}
|
||||
bool IsArray_, Prec Prec_)
|
||||
: Node(KNewExpr, Prec_), ExprList(ExprList_), Type(Type_),
|
||||
InitList(InitList_), IsGlobal(IsGlobal_), IsArray(IsArray_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const {
|
||||
F(ExprList, Type, InitList, IsGlobal, IsArray);
|
||||
@ -1967,16 +2017,16 @@ public:
|
||||
if (IsArray)
|
||||
OB += "[]";
|
||||
if (!ExprList.empty()) {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
ExprList.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
OB += ' ';
|
||||
OB += " ";
|
||||
Type->print(OB);
|
||||
if (!InitList.empty()) {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
InitList.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -1987,8 +2037,9 @@ class DeleteExpr : public Node {
|
||||
bool IsArray;
|
||||
|
||||
public:
|
||||
DeleteExpr(Node *Op_, bool IsGlobal_, bool IsArray_)
|
||||
: Node(KDeleteExpr), Op(Op_), IsGlobal(IsGlobal_), IsArray(IsArray_) {}
|
||||
DeleteExpr(Node *Op_, bool IsGlobal_, bool IsArray_, Prec Prec_)
|
||||
: Node(KDeleteExpr, Prec_), Op(Op_), IsGlobal(IsGlobal_),
|
||||
IsArray(IsArray_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Op, IsGlobal, IsArray); }
|
||||
|
||||
@ -2008,16 +2059,14 @@ class PrefixExpr : public Node {
|
||||
Node *Child;
|
||||
|
||||
public:
|
||||
PrefixExpr(StringView Prefix_, Node *Child_)
|
||||
: Node(KPrefixExpr), Prefix(Prefix_), Child(Child_) {}
|
||||
PrefixExpr(StringView Prefix_, Node *Child_, Prec Prec_)
|
||||
: Node(KPrefixExpr, Prec_), Prefix(Prefix_), Child(Child_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Prefix, Child); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += Prefix;
|
||||
OB += "(";
|
||||
Child->print(OB);
|
||||
OB += ")";
|
||||
Child->printAsOperand(OB, getPrecedence());
|
||||
}
|
||||
};
|
||||
|
||||
@ -2040,17 +2089,18 @@ class ConversionExpr : public Node {
|
||||
NodeArray Expressions;
|
||||
|
||||
public:
|
||||
ConversionExpr(const Node *Type_, NodeArray Expressions_)
|
||||
: Node(KConversionExpr), Type(Type_), Expressions(Expressions_) {}
|
||||
ConversionExpr(const Node *Type_, NodeArray Expressions_, Prec Prec_)
|
||||
: Node(KConversionExpr, Prec_), Type(Type_), Expressions(Expressions_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Type, Expressions); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Type->print(OB);
|
||||
OB += ")(";
|
||||
OB.printClose();
|
||||
OB.printOpen();
|
||||
Expressions.printWithComma(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -2061,18 +2111,19 @@ class PointerToMemberConversionExpr : public Node {
|
||||
|
||||
public:
|
||||
PointerToMemberConversionExpr(const Node *Type_, const Node *SubExpr_,
|
||||
StringView Offset_)
|
||||
: Node(KPointerToMemberConversionExpr), Type(Type_), SubExpr(SubExpr_),
|
||||
Offset(Offset_) {}
|
||||
StringView Offset_, Prec Prec_)
|
||||
: Node(KPointerToMemberConversionExpr, Prec_), Type(Type_),
|
||||
SubExpr(SubExpr_), Offset(Offset_) {}
|
||||
|
||||
template<typename Fn> void match(Fn F) const { F(Type, SubExpr, Offset); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
Type->print(OB);
|
||||
OB += ")(";
|
||||
OB.printClose();
|
||||
OB.printOpen();
|
||||
SubExpr->print(OB);
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -2158,41 +2209,33 @@ public:
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
auto PrintPack = [&] {
|
||||
OB += '(';
|
||||
OB.printOpen();
|
||||
ParameterPackExpansion(Pack).print(OB);
|
||||
OB += ')';
|
||||
OB.printClose();
|
||||
};
|
||||
|
||||
OB += '(';
|
||||
|
||||
if (IsLeftFold) {
|
||||
// init op ... op pack
|
||||
if (Init != nullptr) {
|
||||
Init->print(OB);
|
||||
OB += ' ';
|
||||
OB += OperatorName;
|
||||
OB += ' ';
|
||||
}
|
||||
// ... op pack
|
||||
OB += "... ";
|
||||
OB += OperatorName;
|
||||
OB += ' ';
|
||||
PrintPack();
|
||||
} else { // !IsLeftFold
|
||||
// pack op ...
|
||||
PrintPack();
|
||||
OB += ' ';
|
||||
OB += OperatorName;
|
||||
OB += " ...";
|
||||
// pack op ... op init
|
||||
if (Init != nullptr) {
|
||||
OB += ' ';
|
||||
OB += OperatorName;
|
||||
OB += ' ';
|
||||
Init->print(OB);
|
||||
}
|
||||
OB.printOpen();
|
||||
// Either '[init op ]... op pack' or 'pack op ...[ op init]'
|
||||
// Refactored to '[(init|pack) op ]...[ op (pack|init)]'
|
||||
// Fold expr operands are cast-expressions
|
||||
if (!IsLeftFold || Init != nullptr) {
|
||||
// '(init|pack) op '
|
||||
if (IsLeftFold)
|
||||
Init->printAsOperand(OB, Prec::Cast, true);
|
||||
else
|
||||
PrintPack();
|
||||
OB << " " << OperatorName << " ";
|
||||
}
|
||||
OB += ')';
|
||||
OB << "...";
|
||||
if (IsLeftFold || Init != nullptr) {
|
||||
// ' op (init|pack)'
|
||||
OB << " " << OperatorName << " ";
|
||||
if (IsLeftFold)
|
||||
PrintPack();
|
||||
else
|
||||
Init->printAsOperand(OB, Prec::Cast, true);
|
||||
}
|
||||
OB.printClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -2266,9 +2309,9 @@ public:
|
||||
template<typename Fn> void match(Fn F) const { F(Ty, Integer); }
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
OB << "(";
|
||||
OB.printOpen();
|
||||
Ty->print(OB);
|
||||
OB << ")";
|
||||
OB.printClose();
|
||||
|
||||
if (Integer[0] == 'n')
|
||||
OB << "-" << Integer.dropFront(1);
|
||||
@ -2289,13 +2332,13 @@ public:
|
||||
|
||||
void printLeft(OutputBuffer &OB) const override {
|
||||
if (Type.size() > 3) {
|
||||
OB += "(";
|
||||
OB.printOpen();
|
||||
OB += Type;
|
||||
OB += ")";
|
||||
OB.printClose();
|
||||
}
|
||||
|
||||
if (Value[0] == 'n') {
|
||||
OB += "-";
|
||||
OB += '-';
|
||||
OB += Value.dropFront(1);
|
||||
} else
|
||||
OB += Value;
|
||||
@ -2526,8 +2569,8 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
|
||||
/// Parse the <expr> production.
|
||||
Node *parseExpr();
|
||||
Node *parsePrefixExpr(StringView Kind);
|
||||
Node *parseBinaryExpr(StringView Kind);
|
||||
Node *parsePrefixExpr(StringView Kind, Node::Prec Prec);
|
||||
Node *parseBinaryExpr(StringView Kind, Node::Prec Prec);
|
||||
Node *parseIntegerLiteral(StringView Lit);
|
||||
Node *parseExprPrimary();
|
||||
template <class Float> Node *parseFloatingLiteral();
|
||||
@ -2535,7 +2578,7 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
Node *parseConversionExpr();
|
||||
Node *parseBracedExpr();
|
||||
Node *parseFoldExpr();
|
||||
Node *parsePointerToMemberConversionExpr();
|
||||
Node *parsePointerToMemberConversionExpr(Node::Prec Prec);
|
||||
Node *parseSubobjectExpr();
|
||||
|
||||
/// Parse the <type> production.
|
||||
@ -2615,11 +2658,13 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
char Enc[2]; // Encoding
|
||||
OIKind Kind; // Kind of operator
|
||||
bool Flag : 1; // Entry-specific flag
|
||||
Node::Prec Prec : 7; // Precedence
|
||||
const char *Name; // Spelling
|
||||
|
||||
public:
|
||||
constexpr OperatorInfo(const char (&E)[3], OIKind K, bool F, const char *N)
|
||||
: Enc{E[0], E[1]}, Kind{K}, Flag{F}, Name{N} {}
|
||||
constexpr OperatorInfo(const char (&E)[3], OIKind K, bool F, Node::Prec P,
|
||||
const char *N)
|
||||
: Enc{E[0], E[1]}, Kind{K}, Flag{F}, Prec{P}, Name{N} {}
|
||||
|
||||
public:
|
||||
bool operator<(const OperatorInfo &Other) const {
|
||||
@ -2647,6 +2692,7 @@ template <typename Derived, typename Alloc> struct AbstractManglingParser {
|
||||
StringView getName() const { return Name; }
|
||||
OIKind getKind() const { return Kind; }
|
||||
bool getFlag() const { return Flag; }
|
||||
Node::Prec getPrecedence() const { return Prec; }
|
||||
};
|
||||
const OperatorInfo *parseOperatorEncoding();
|
||||
|
||||
@ -2950,68 +2996,89 @@ const typename AbstractManglingParser<Derived, Alloc>::OperatorInfo *
|
||||
AbstractManglingParser<Derived, Alloc>::parseOperatorEncoding() {
|
||||
static const OperatorInfo Ops[] = {
|
||||
// Keep ordered by encoding
|
||||
{"aN", OperatorInfo::Binary, false, "operator&="},
|
||||
{"aS", OperatorInfo::Binary, false, "operator="},
|
||||
{"aa", OperatorInfo::Binary, false, "operator&&"},
|
||||
{"ad", OperatorInfo::Prefix, false, "operator&"},
|
||||
{"an", OperatorInfo::Binary, false, "operator&"},
|
||||
{"at", OperatorInfo::OfIdOp, /*Type*/ true, "alignof ("},
|
||||
{"aw", OperatorInfo::NameOnly, false, "operator co_await"},
|
||||
{"az", OperatorInfo::OfIdOp, /*Type*/ false, "alignof ("},
|
||||
{"cc", OperatorInfo::NamedCast, false, "const_cast"},
|
||||
{"cl", OperatorInfo::Call, false, "operator()"},
|
||||
{"cm", OperatorInfo::Binary, false, "operator,"},
|
||||
{"co", OperatorInfo::Prefix, false, "operator~"},
|
||||
{"cv", OperatorInfo::CCast, false, "operator"}, // C Cast
|
||||
{"dV", OperatorInfo::Binary, false, "operator/="},
|
||||
{"da", OperatorInfo::Del, /*Ary*/ true, "operator delete[]"},
|
||||
{"dc", OperatorInfo::NamedCast, false, "dynamic_cast"},
|
||||
{"de", OperatorInfo::Prefix, false, "operator*"},
|
||||
{"dl", OperatorInfo::Del, /*Ary*/ false, "operator delete"},
|
||||
{"ds", OperatorInfo::Member, /*Named*/ false, "operator.*"},
|
||||
{"dt", OperatorInfo::Member, /*Named*/ false, "operator."},
|
||||
{"dv", OperatorInfo::Binary, false, "operator/"},
|
||||
{"eO", OperatorInfo::Binary, false, "operator^="},
|
||||
{"eo", OperatorInfo::Binary, false, "operator^"},
|
||||
{"eq", OperatorInfo::Binary, false, "operator=="},
|
||||
{"ge", OperatorInfo::Binary, false, "operator>="},
|
||||
{"gt", OperatorInfo::Binary, false, "operator>"},
|
||||
{"ix", OperatorInfo::Array, false, "operator[]"},
|
||||
{"lS", OperatorInfo::Binary, false, "operator<<="},
|
||||
{"le", OperatorInfo::Binary, false, "operator<="},
|
||||
{"ls", OperatorInfo::Binary, false, "operator<<"},
|
||||
{"lt", OperatorInfo::Binary, false, "operator<"},
|
||||
{"mI", OperatorInfo::Binary, false, "operator-="},
|
||||
{"mL", OperatorInfo::Binary, false, "operator*="},
|
||||
{"mi", OperatorInfo::Binary, false, "operator-"},
|
||||
{"ml", OperatorInfo::Binary, false, "operator*"},
|
||||
{"mm", OperatorInfo::Postfix, false, "operator--"},
|
||||
{"na", OperatorInfo::New, /*Ary*/ true, "operator new[]"},
|
||||
{"ne", OperatorInfo::Binary, false, "operator!="},
|
||||
{"ng", OperatorInfo::Prefix, false, "operator-"},
|
||||
{"nt", OperatorInfo::Prefix, false, "operator!"},
|
||||
{"nw", OperatorInfo::New, /*Ary*/ false, "operator new"},
|
||||
{"oR", OperatorInfo::Binary, false, "operator|="},
|
||||
{"oo", OperatorInfo::Binary, false, "operator||"},
|
||||
{"or", OperatorInfo::Binary, false, "operator|"},
|
||||
{"pL", OperatorInfo::Binary, false, "operator+="},
|
||||
{"pl", OperatorInfo::Binary, false, "operator+"},
|
||||
{"pm", OperatorInfo::Member, /*Named*/ false, "operator->*"},
|
||||
{"pp", OperatorInfo::Postfix, false, "operator++"},
|
||||
{"ps", OperatorInfo::Prefix, false, "operator+"},
|
||||
{"pt", OperatorInfo::Member, /*Named*/ true, "operator->"},
|
||||
{"qu", OperatorInfo::Conditional, false, "operator?"},
|
||||
{"rM", OperatorInfo::Binary, false, "operator%="},
|
||||
{"rS", OperatorInfo::Binary, false, "operator>>="},
|
||||
{"rc", OperatorInfo::NamedCast, false, "reinterpret_cast"},
|
||||
{"rm", OperatorInfo::Binary, false, "operator%"},
|
||||
{"rs", OperatorInfo::Binary, false, "operator>>"},
|
||||
{"sc", OperatorInfo::NamedCast, false, "static_cast"},
|
||||
{"ss", OperatorInfo::Binary, false, "operator<=>"},
|
||||
{"st", OperatorInfo::OfIdOp, /*Type*/ true, "sizeof ("},
|
||||
{"sz", OperatorInfo::OfIdOp, /*Type*/ false, "sizeof ("},
|
||||
{"te", OperatorInfo::OfIdOp, /*Type*/ false, "typeid ("},
|
||||
{"ti", OperatorInfo::OfIdOp, /*Type*/ true, "typeid ("},
|
||||
{"aN", OperatorInfo::Binary, false, Node::Prec::Assign, "operator&="},
|
||||
{"aS", OperatorInfo::Binary, false, Node::Prec::Assign, "operator="},
|
||||
{"aa", OperatorInfo::Binary, false, Node::Prec::AndIf, "operator&&"},
|
||||
{"ad", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator&"},
|
||||
{"an", OperatorInfo::Binary, false, Node::Prec::And, "operator&"},
|
||||
{"at", OperatorInfo::OfIdOp, /*Type*/ true, Node::Prec::Unary,
|
||||
"alignof "},
|
||||
{"aw", OperatorInfo::NameOnly, false, Node::Prec::Primary,
|
||||
"operator co_await"},
|
||||
{"az", OperatorInfo::OfIdOp, /*Type*/ false, Node::Prec::Unary,
|
||||
"alignof "},
|
||||
{"cc", OperatorInfo::NamedCast, false, Node::Prec::Postfix, "const_cast"},
|
||||
{"cl", OperatorInfo::Call, false, Node::Prec::Postfix, "operator()"},
|
||||
{"cm", OperatorInfo::Binary, false, Node::Prec::Comma, "operator,"},
|
||||
{"co", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator~"},
|
||||
{"cv", OperatorInfo::CCast, false, Node::Prec::Cast,
|
||||
"operator"}, // C Cast
|
||||
{"dV", OperatorInfo::Binary, false, Node::Prec::Assign, "operator/="},
|
||||
{"da", OperatorInfo::Del, /*Ary*/ true, Node::Prec::Unary,
|
||||
"operator delete[]"},
|
||||
{"dc", OperatorInfo::NamedCast, false, Node::Prec::Postfix,
|
||||
"dynamic_cast"},
|
||||
{"de", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator*"},
|
||||
{"dl", OperatorInfo::Del, /*Ary*/ false, Node::Prec::Unary,
|
||||
"operator delete"},
|
||||
{"ds", OperatorInfo::Member, /*Named*/ false, Node::Prec::PtrMem,
|
||||
"operator.*"},
|
||||
{"dt", OperatorInfo::Member, /*Named*/ false, Node::Prec::Postfix,
|
||||
"operator."},
|
||||
{"dv", OperatorInfo::Binary, false, Node::Prec::Assign, "operator/"},
|
||||
{"eO", OperatorInfo::Binary, false, Node::Prec::Assign, "operator^="},
|
||||
{"eo", OperatorInfo::Binary, false, Node::Prec::Xor, "operator^"},
|
||||
{"eq", OperatorInfo::Binary, false, Node::Prec::Equality, "operator=="},
|
||||
{"ge", OperatorInfo::Binary, false, Node::Prec::Relational, "operator>="},
|
||||
{"gt", OperatorInfo::Binary, false, Node::Prec::Relational, "operator>"},
|
||||
{"ix", OperatorInfo::Array, false, Node::Prec::Postfix, "operator[]"},
|
||||
{"lS", OperatorInfo::Binary, false, Node::Prec::Assign, "operator<<="},
|
||||
{"le", OperatorInfo::Binary, false, Node::Prec::Relational, "operator<="},
|
||||
{"ls", OperatorInfo::Binary, false, Node::Prec::Shift, "operator<<"},
|
||||
{"lt", OperatorInfo::Binary, false, Node::Prec::Relational, "operator<"},
|
||||
{"mI", OperatorInfo::Binary, false, Node::Prec::Assign, "operator-="},
|
||||
{"mL", OperatorInfo::Binary, false, Node::Prec::Assign, "operator*="},
|
||||
{"mi", OperatorInfo::Binary, false, Node::Prec::Additive, "operator-"},
|
||||
{"ml", OperatorInfo::Binary, false, Node::Prec::Multiplicative,
|
||||
"operator*"},
|
||||
{"mm", OperatorInfo::Postfix, false, Node::Prec::Postfix, "operator--"},
|
||||
{"na", OperatorInfo::New, /*Ary*/ true, Node::Prec::Unary,
|
||||
"operator new[]"},
|
||||
{"ne", OperatorInfo::Binary, false, Node::Prec::Equality, "operator!="},
|
||||
{"ng", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator-"},
|
||||
{"nt", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator!"},
|
||||
{"nw", OperatorInfo::New, /*Ary*/ false, Node::Prec::Unary,
|
||||
"operator new"},
|
||||
{"oR", OperatorInfo::Binary, false, Node::Prec::Assign, "operator|="},
|
||||
{"oo", OperatorInfo::Binary, false, Node::Prec::OrIf, "operator||"},
|
||||
{"or", OperatorInfo::Binary, false, Node::Prec::Ior, "operator|"},
|
||||
{"pL", OperatorInfo::Binary, false, Node::Prec::Assign, "operator+="},
|
||||
{"pl", OperatorInfo::Binary, false, Node::Prec::Additive, "operator+"},
|
||||
{"pm", OperatorInfo::Member, /*Named*/ false, Node::Prec::PtrMem,
|
||||
"operator->*"},
|
||||
{"pp", OperatorInfo::Postfix, false, Node::Prec::Postfix, "operator++"},
|
||||
{"ps", OperatorInfo::Prefix, false, Node::Prec::Unary, "operator+"},
|
||||
{"pt", OperatorInfo::Member, /*Named*/ true, Node::Prec::Postfix,
|
||||
"operator->"},
|
||||
{"qu", OperatorInfo::Conditional, false, Node::Prec::Conditional,
|
||||
"operator?"},
|
||||
{"rM", OperatorInfo::Binary, false, Node::Prec::Assign, "operator%="},
|
||||
{"rS", OperatorInfo::Binary, false, Node::Prec::Assign, "operator>>="},
|
||||
{"rc", OperatorInfo::NamedCast, false, Node::Prec::Postfix,
|
||||
"reinterpret_cast"},
|
||||
{"rm", OperatorInfo::Binary, false, Node::Prec::Multiplicative,
|
||||
"operator%"},
|
||||
{"rs", OperatorInfo::Binary, false, Node::Prec::Shift, "operator>>"},
|
||||
{"sc", OperatorInfo::NamedCast, false, Node::Prec::Postfix,
|
||||
"static_cast"},
|
||||
{"ss", OperatorInfo::Binary, false, Node::Prec::Spaceship, "operator<=>"},
|
||||
{"st", OperatorInfo::OfIdOp, /*Type*/ true, Node::Prec::Unary, "sizeof "},
|
||||
{"sz", OperatorInfo::OfIdOp, /*Type*/ false, Node::Prec::Unary,
|
||||
"sizeof "},
|
||||
{"te", OperatorInfo::OfIdOp, /*Type*/ false, Node::Prec::Postfix,
|
||||
"typeid "},
|
||||
{"ti", OperatorInfo::OfIdOp, /*Type*/ true, Node::Prec::Postfix,
|
||||
"typeid "},
|
||||
};
|
||||
const auto NumOps = sizeof(Ops) / sizeof(Ops[0]);
|
||||
|
||||
@ -3618,7 +3685,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseDecltype() {
|
||||
return nullptr;
|
||||
if (!consumeIf('E'))
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>("decltype(", E, ")");
|
||||
return make<EnclosingExpr>("decltype", E);
|
||||
}
|
||||
|
||||
// <array-type> ::= A <positive dimension number> _ <element type>
|
||||
@ -4105,22 +4172,24 @@ Node *AbstractManglingParser<Derived, Alloc>::parseType() {
|
||||
}
|
||||
|
||||
template <typename Derived, typename Alloc>
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parsePrefixExpr(StringView Kind) {
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parsePrefixExpr(StringView Kind,
|
||||
Node::Prec Prec) {
|
||||
Node *E = getDerived().parseExpr();
|
||||
if (E == nullptr)
|
||||
return nullptr;
|
||||
return make<PrefixExpr>(Kind, E);
|
||||
return make<PrefixExpr>(Kind, E, Prec);
|
||||
}
|
||||
|
||||
template <typename Derived, typename Alloc>
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parseBinaryExpr(StringView Kind) {
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parseBinaryExpr(StringView Kind,
|
||||
Node::Prec Prec) {
|
||||
Node *LHS = getDerived().parseExpr();
|
||||
if (LHS == nullptr)
|
||||
return nullptr;
|
||||
Node *RHS = getDerived().parseExpr();
|
||||
if (RHS == nullptr)
|
||||
return nullptr;
|
||||
return make<BinaryExpr>(LHS, Kind, RHS);
|
||||
return make<BinaryExpr>(LHS, Kind, RHS, Prec);
|
||||
}
|
||||
|
||||
template <typename Derived, typename Alloc>
|
||||
@ -4431,7 +4500,9 @@ Node *AbstractManglingParser<Derived, Alloc>::parseFoldExpr() {
|
||||
//
|
||||
// Not yet in the spec: https://github.com/itanium-cxx-abi/cxx-abi/issues/47
|
||||
template <typename Derived, typename Alloc>
|
||||
Node *AbstractManglingParser<Derived, Alloc>::parsePointerToMemberConversionExpr() {
|
||||
Node *
|
||||
AbstractManglingParser<Derived, Alloc>::parsePointerToMemberConversionExpr(
|
||||
Node::Prec Prec) {
|
||||
Node *Ty = getDerived().parseType();
|
||||
if (!Ty)
|
||||
return nullptr;
|
||||
@ -4441,7 +4512,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parsePointerToMemberConversionExpr
|
||||
StringView Offset = getDerived().parseNumber(true);
|
||||
if (!consumeIf('E'))
|
||||
return nullptr;
|
||||
return make<PointerToMemberConversionExpr>(Ty, Expr, Offset);
|
||||
return make<PointerToMemberConversionExpr>(Ty, Expr, Offset, Prec);
|
||||
}
|
||||
|
||||
// <expression> ::= so <referent type> <expr> [<offset number>] <union-selector>* [p] E
|
||||
@ -4525,18 +4596,18 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
switch (Op->getKind()) {
|
||||
case OperatorInfo::Binary:
|
||||
// Binary operator: lhs @ rhs
|
||||
return getDerived().parseBinaryExpr(Sym);
|
||||
return getDerived().parseBinaryExpr(Sym, Op->getPrecedence());
|
||||
case OperatorInfo::Prefix:
|
||||
// Prefix unary operator: @ expr
|
||||
return getDerived().parsePrefixExpr(Sym);
|
||||
return getDerived().parsePrefixExpr(Sym, Op->getPrecedence());
|
||||
case OperatorInfo::Postfix: {
|
||||
// Postfix unary operator: expr @
|
||||
if (consumeIf('_'))
|
||||
return getDerived().parsePrefixExpr(Sym);
|
||||
return getDerived().parsePrefixExpr(Sym, Op->getPrecedence());
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return nullptr;
|
||||
return make<PostfixExpr>(Ex, Sym);
|
||||
return make<PostfixExpr>(Ex, Sym, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Array: {
|
||||
// Array Index: lhs [ rhs ]
|
||||
@ -4546,7 +4617,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *Index = getDerived().parseExpr();
|
||||
if (Index == nullptr)
|
||||
return nullptr;
|
||||
return make<ArraySubscriptExpr>(Base, Index);
|
||||
return make<ArraySubscriptExpr>(Base, Index, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Member: {
|
||||
// Member access lhs @ rhs
|
||||
@ -4556,7 +4627,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *RHS = getDerived().parseExpr();
|
||||
if (RHS == nullptr)
|
||||
return nullptr;
|
||||
return make<MemberExpr>(LHS, Sym, RHS);
|
||||
return make<MemberExpr>(LHS, Sym, RHS, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::New: {
|
||||
// New
|
||||
@ -4587,14 +4658,15 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
}
|
||||
NodeArray Inits = popTrailingNodeArray(InitsBegin);
|
||||
return make<NewExpr>(ExprList, Ty, Inits, Global,
|
||||
/*IsArray=*/Op->getFlag());
|
||||
/*IsArray=*/Op->getFlag(), Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Del: {
|
||||
// Delete
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return nullptr;
|
||||
return make<DeleteExpr>(Ex, Global, /*IsArray=*/Op->getFlag());
|
||||
return make<DeleteExpr>(Ex, Global, /*IsArray=*/Op->getFlag(),
|
||||
Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Call: {
|
||||
// Function Call
|
||||
@ -4608,7 +4680,8 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
return nullptr;
|
||||
Names.push_back(E);
|
||||
}
|
||||
return make<CallExpr>(Callee, popTrailingNodeArray(ExprsBegin));
|
||||
return make<CallExpr>(Callee, popTrailingNodeArray(ExprsBegin),
|
||||
Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::CCast: {
|
||||
// C Cast: (type)expr
|
||||
@ -4633,7 +4706,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
NodeArray Exprs = popTrailingNodeArray(ExprsBegin);
|
||||
if (!IsMany && Exprs.size() != 1)
|
||||
return nullptr;
|
||||
return make<ConversionExpr>(Ty, Exprs);
|
||||
return make<ConversionExpr>(Ty, Exprs, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::Conditional: {
|
||||
// Conditional operator: expr ? expr : expr
|
||||
@ -4646,7 +4719,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *RHS = getDerived().parseExpr();
|
||||
if (RHS == nullptr)
|
||||
return nullptr;
|
||||
return make<ConditionalExpr>(Cond, LHS, RHS);
|
||||
return make<ConditionalExpr>(Cond, LHS, RHS, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::NamedCast: {
|
||||
// Named cast operation, @<type>(expr)
|
||||
@ -4656,7 +4729,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return nullptr;
|
||||
return make<CastExpr>(Sym, Ty, Ex);
|
||||
return make<CastExpr>(Sym, Ty, Ex, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::OfIdOp: {
|
||||
// [sizeof/alignof/typeid] ( <type>|<expr> )
|
||||
@ -4664,7 +4737,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Op->getFlag() ? getDerived().parseType() : getDerived().parseExpr();
|
||||
if (!Arg)
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>(Sym, Arg, ")");
|
||||
return make<EnclosingExpr>(Sym, Arg, Op->getPrecedence());
|
||||
}
|
||||
case OperatorInfo::NameOnly: {
|
||||
// Not valid as an expression operand.
|
||||
@ -4698,12 +4771,12 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
return make<InitListExpr>(nullptr, popTrailingNodeArray(InitsBegin));
|
||||
}
|
||||
if (consumeIf("mc"))
|
||||
return parsePointerToMemberConversionExpr();
|
||||
return parsePointerToMemberConversionExpr(Node::Prec::Unary);
|
||||
if (consumeIf("nx")) {
|
||||
Node *Ex = getDerived().parseExpr();
|
||||
if (Ex == nullptr)
|
||||
return Ex;
|
||||
return make<EnclosingExpr>("noexcept (", Ex, ")");
|
||||
return make<EnclosingExpr>("noexcept ", Ex, Node::Prec::Unary);
|
||||
}
|
||||
if (consumeIf("so"))
|
||||
return parseSubobjectExpr();
|
||||
@ -4723,7 +4796,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Node *FP = getDerived().parseFunctionParam();
|
||||
if (FP == nullptr)
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>("sizeof... (", FP, ")");
|
||||
return make<EnclosingExpr>("sizeof... ", FP);
|
||||
}
|
||||
if (consumeIf("sP")) {
|
||||
size_t ArgsBegin = Names.size();
|
||||
@ -4736,7 +4809,7 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
auto *Pack = make<NodeArrayNode>(popTrailingNodeArray(ArgsBegin));
|
||||
if (!Pack)
|
||||
return nullptr;
|
||||
return make<EnclosingExpr>("sizeof... (", Pack, ")");
|
||||
return make<EnclosingExpr>("sizeof... ", Pack);
|
||||
}
|
||||
if (consumeIf("tl")) {
|
||||
Node *Ty = getDerived().parseType();
|
||||
@ -4792,7 +4865,8 @@ Node *AbstractManglingParser<Derived, Alloc>::parseExpr() {
|
||||
Names.push_back(E);
|
||||
}
|
||||
}
|
||||
return make<CallExpr>(Name, popTrailingNodeArray(ExprsBegin));
|
||||
return make<CallExpr>(Name, popTrailingNodeArray(ExprsBegin),
|
||||
Node::Prec::Postfix);
|
||||
}
|
||||
|
||||
// Only unresolved names remain.
|
||||
|
@ -86,6 +86,21 @@ public:
|
||||
unsigned CurrentPackIndex = std::numeric_limits<unsigned>::max();
|
||||
unsigned CurrentPackMax = std::numeric_limits<unsigned>::max();
|
||||
|
||||
/// When zero, we're printing template args and '>' needs to be parenthesized.
|
||||
/// Use a counter so we can simply increment inside parentheses.
|
||||
unsigned GtIsGt = 1;
|
||||
|
||||
bool isGtInsideTemplateArgs() const { return GtIsGt == 0; }
|
||||
|
||||
void printOpen(char Open = '(') {
|
||||
GtIsGt++;
|
||||
*this += Open;
|
||||
}
|
||||
void printClose(char Close = ')') {
|
||||
GtIsGt--;
|
||||
*this += Close;
|
||||
}
|
||||
|
||||
OutputBuffer &operator+=(StringView R) {
|
||||
if (size_t Size = R.size()) {
|
||||
grow(Size);
|
||||
|
Loading…
Reference in New Issue
Block a user