mirror of https://github.com/microsoft/clang.git
Fix typos in clang
Found via codespell -q 3 -I ../clang-whitelist.txt Where whitelist consists of: archtype cas classs checkk compres definit frome iff inteval ith lod methode nd optin ot pres statics te thru Patch by luzpaz! (This is a subset of D44188 that applies cleanly with a few files that have dubious fixes reverted.) Differential revision: https://reviews.llvm.org/D44188 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@329399 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0a1726abd9
commit
b8b9458165
|
@ -881,7 +881,7 @@ CursorKind.INVALID_CODE = CursorKind(73)
|
||||||
CursorKind.UNEXPOSED_EXPR = CursorKind(100)
|
CursorKind.UNEXPOSED_EXPR = CursorKind(100)
|
||||||
|
|
||||||
# An expression that refers to some value declaration, such as a function,
|
# An expression that refers to some value declaration, such as a function,
|
||||||
# varible, or enumerator.
|
# variable, or enumerator.
|
||||||
CursorKind.DECL_REF_EXPR = CursorKind(101)
|
CursorKind.DECL_REF_EXPR = CursorKind(101)
|
||||||
|
|
||||||
# An expression that refers to a member of a struct, union, class, Objective-C
|
# An expression that refers to a member of a struct, union, class, Objective-C
|
||||||
|
@ -1501,7 +1501,7 @@ class Cursor(Structure):
|
||||||
return conf.lib.clang_getCursorDefinition(self)
|
return conf.lib.clang_getCursorDefinition(self)
|
||||||
|
|
||||||
def get_usr(self):
|
def get_usr(self):
|
||||||
"""Return the Unified Symbol Resultion (USR) for the entity referenced
|
"""Return the Unified Symbol Resolution (USR) for the entity referenced
|
||||||
by the given cursor (or None).
|
by the given cursor (or None).
|
||||||
|
|
||||||
A Unified Symbol Resolution (USR) is a string that identifies a
|
A Unified Symbol Resolution (USR) is a string that identifies a
|
||||||
|
|
|
@ -21,7 +21,7 @@ set(BUG_REPORT_URL "http://developer.apple.com/bugreporter/" CACHE STRING "")
|
||||||
set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang")
|
set(LLVM_BUILD_EXTERNAL_COMPILER_RT ON CACHE BOOL "Build Compiler-RT with just-built clang")
|
||||||
set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries")
|
set(COMPILER_RT_ENABLE_IOS ON CACHE BOOL "Build iOS Compiler-RT libraries")
|
||||||
|
|
||||||
set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatable toolchain")
|
set(LLVM_CREATE_XCODE_TOOLCHAIN ON CACHE BOOL "Generate targets to create and install an Xcode compatible toolchain")
|
||||||
|
|
||||||
# Make unit tests (if present) part of the ALL target
|
# Make unit tests (if present) part of the ALL target
|
||||||
set(LLVM_BUILD_TESTS ON CACHE BOOL "")
|
set(LLVM_BUILD_TESTS ON CACHE BOOL "")
|
||||||
|
|
|
@ -4557,7 +4557,7 @@ matcher, or is a pointer to a type that matches the InnerMatcher.
|
||||||
|
|
||||||
|
|
||||||
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>></td><td class="name" onclick="toggle('forEachOverridden0')"><a name="forEachOverridden0Anchor">forEachOverridden</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>> InnerMatcher</td></tr>
|
<tr><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>></td><td class="name" onclick="toggle('forEachOverridden0')"><a name="forEachOverridden0Anchor">forEachOverridden</a></td><td>Matcher<<a href="http://clang.llvm.org/doxygen/classclang_1_1CXXMethodDecl.html">CXXMethodDecl</a>> InnerMatcher</td></tr>
|
||||||
<tr><td colspan="4" class="doc" id="forEachOverridden0"><pre>Matches each method overriden by the given method. This matcher may
|
<tr><td colspan="4" class="doc" id="forEachOverridden0"><pre>Matches each method overridden by the given method. This matcher may
|
||||||
produce multiple matches.
|
produce multiple matches.
|
||||||
|
|
||||||
Given
|
Given
|
||||||
|
|
|
@ -21,7 +21,7 @@ This fix is overly conservative though. So i did a bit of investigation as to
|
||||||
how model std::initializer_list better.
|
how model std::initializer_list better.
|
||||||
|
|
||||||
According to the standard, std::initializer_list<T> is an object that has
|
According to the standard, std::initializer_list<T> is an object that has
|
||||||
methods begin(), end(), and size(), where begin() returns a pointer to continous
|
methods begin(), end(), and size(), where begin() returns a pointer to continuous
|
||||||
array of size() objects of type T, and end() is equal to begin() plus size().
|
array of size() objects of type T, and end() is equal to begin() plus size().
|
||||||
The standard does hint that it should be possible to implement
|
The standard does hint that it should be possible to implement
|
||||||
std::initializer_list<T> as a pair of pointers, or as a pointer and a size
|
std::initializer_list<T> as a pair of pointers, or as a pointer and a size
|
||||||
|
|
|
@ -1065,7 +1065,7 @@ HTML_STYLESHEET =
|
||||||
# defined cascading style sheet that is included after the standard style sheets
|
# defined cascading style sheet that is included after the standard style sheets
|
||||||
# created by doxygen. Using this option one can overrule certain style aspects.
|
# created by doxygen. Using this option one can overrule certain style aspects.
|
||||||
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
||||||
# standard style sheet and is therefor more robust against future updates.
|
# standard style sheet and is therefore more robust against future updates.
|
||||||
# Doxygen will copy the style sheet file to the output directory. For an example
|
# Doxygen will copy the style sheet file to the output directory. For an example
|
||||||
# see the documentation.
|
# see the documentation.
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
|
@ -4988,7 +4988,7 @@ enum CXCompletionChunkKind {
|
||||||
* for "int x", indicating that the current argument will initialize that
|
* for "int x", indicating that the current argument will initialize that
|
||||||
* parameter. After typing further, to \c add(17, (where the code-completion
|
* parameter. After typing further, to \c add(17, (where the code-completion
|
||||||
* point is after the ","), the code-completion string will contain a
|
* point is after the ","), the code-completion string will contain a
|
||||||
* "current paremeter" chunk to "int y".
|
* "current parameter" chunk to "int y".
|
||||||
*/
|
*/
|
||||||
CXCompletionChunk_CurrentParameter,
|
CXCompletionChunk_CurrentParameter,
|
||||||
/**
|
/**
|
||||||
|
@ -5409,7 +5409,7 @@ CINDEX_LINKAGE unsigned clang_defaultCodeCompleteOptions(void);
|
||||||
* user types punctuation characters or whitespace, at which point the
|
* user types punctuation characters or whitespace, at which point the
|
||||||
* code-completion location will coincide with the cursor. For example, if \c p
|
* code-completion location will coincide with the cursor. For example, if \c p
|
||||||
* is a pointer, code-completion might be triggered after the "-" and then
|
* is a pointer, code-completion might be triggered after the "-" and then
|
||||||
* after the ">" in \c p->. When the code-completion location is afer the ">",
|
* after the ">" in \c p->. When the code-completion location is after the ">",
|
||||||
* the completion results will provide, e.g., the members of the struct that
|
* the completion results will provide, e.g., the members of the struct that
|
||||||
* "p" points to. The client is responsible for placing the cursor at the
|
* "p" points to. The client is responsible for placing the cursor at the
|
||||||
* beginning of the token currently being typed, then filtering the results
|
* beginning of the token currently being typed, then filtering the results
|
||||||
|
|
|
@ -1113,7 +1113,7 @@ public:
|
||||||
/// \brief Apply Objective-C protocol qualifiers to the given type.
|
/// \brief Apply Objective-C protocol qualifiers to the given type.
|
||||||
/// \param allowOnPointerType specifies if we can apply protocol
|
/// \param allowOnPointerType specifies if we can apply protocol
|
||||||
/// qualifiers on ObjCObjectPointerType. It can be set to true when
|
/// qualifiers on ObjCObjectPointerType. It can be set to true when
|
||||||
/// contructing the canonical type of a Objective-C type parameter.
|
/// constructing the canonical type of a Objective-C type parameter.
|
||||||
QualType applyObjCProtocolQualifiers(QualType type,
|
QualType applyObjCProtocolQualifiers(QualType type,
|
||||||
ArrayRef<ObjCProtocolDecl *> protocols, bool &hasError,
|
ArrayRef<ObjCProtocolDecl *> protocols, bool &hasError,
|
||||||
bool allowOnPointerType = false) const;
|
bool allowOnPointerType = false) const;
|
||||||
|
|
|
@ -269,7 +269,7 @@ public:
|
||||||
/// \brief Imposes an order on \c DynTypedNode.
|
/// \brief Imposes an order on \c DynTypedNode.
|
||||||
///
|
///
|
||||||
/// Supports comparison of nodes that support memoization.
|
/// Supports comparison of nodes that support memoization.
|
||||||
/// FIXME: Implement comparsion for other node types (currently
|
/// FIXME: Implement comparison for other node types (currently
|
||||||
/// only Stmt, Decl, Type and NestedNameSpecifier return memoization data).
|
/// only Stmt, Decl, Type and NestedNameSpecifier return memoization data).
|
||||||
bool operator<(const DynTypedNode &Other) const {
|
bool operator<(const DynTypedNode &Other) const {
|
||||||
if (!NodeKind.isSame(Other.NodeKind))
|
if (!NodeKind.isSame(Other.NodeKind))
|
||||||
|
|
|
@ -324,7 +324,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/// \brief Replacable canonical proxy adaptor class that provides the link
|
/// \brief Replaceable canonical proxy adaptor class that provides the link
|
||||||
/// between a canonical type and the accessors of the type.
|
/// between a canonical type and the accessors of the type.
|
||||||
///
|
///
|
||||||
/// The CanProxyAdaptor is a replaceable class template that is instantiated
|
/// The CanProxyAdaptor is a replaceable class template that is instantiated
|
||||||
|
|
|
@ -990,7 +990,7 @@ struct DeclInfo {
|
||||||
|
|
||||||
/// CurrentDecl is the declaration with which the FullComment is associated.
|
/// CurrentDecl is the declaration with which the FullComment is associated.
|
||||||
///
|
///
|
||||||
/// It can be different from \c CommentDecl. It happens when we we decide
|
/// It can be different from \c CommentDecl. It happens when we decide
|
||||||
/// that the comment originally attached to \c CommentDecl is fine for
|
/// that the comment originally attached to \c CommentDecl is fine for
|
||||||
/// \c CurrentDecl too (for example, for a redeclaration or an overrider of
|
/// \c CurrentDecl too (for example, for a redeclaration or an overrider of
|
||||||
/// \c CommentDecl).
|
/// \c CommentDecl).
|
||||||
|
|
|
@ -72,7 +72,7 @@ class Token {
|
||||||
|
|
||||||
/// Integer value associated with a token.
|
/// Integer value associated with a token.
|
||||||
///
|
///
|
||||||
/// If the token is a konwn command, contains command ID and TextPtr is
|
/// If the token is a known command, contains command ID and TextPtr is
|
||||||
/// unused (command spelling can be found with CommandTraits). Otherwise,
|
/// unused (command spelling can be found with CommandTraits). Otherwise,
|
||||||
/// contains the length of the string that starts at TextPtr.
|
/// contains the length of the string that starts at TextPtr.
|
||||||
unsigned IntVal;
|
unsigned IntVal;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
/// To collect data from Stmt nodes, subclass ConstStmtVisitor and include
|
/// To collect data from Stmt nodes, subclass ConstStmtVisitor and include
|
||||||
/// StmtDataCollectors.inc after defining the macros that you need. This
|
/// StmtDataCollectors.inc after defining the macros that you need. This
|
||||||
/// provides data collection implementations for most Stmt kinds. Note
|
/// provides data collection implementations for most Stmt kinds. Note
|
||||||
/// that that code requires some conditions to be met:
|
/// that the code requires some conditions to be met:
|
||||||
///
|
///
|
||||||
/// - There must be a method addData(const T &Data) that accepts strings,
|
/// - There must be a method addData(const T &Data) that accepts strings,
|
||||||
/// integral types as well as QualType. All data is forwarded using
|
/// integral types as well as QualType. All data is forwarded using
|
||||||
|
|
|
@ -1078,7 +1078,7 @@ public:
|
||||||
/// \brief Determine whether this class has a user-declared copy assignment
|
/// \brief Determine whether this class has a user-declared copy assignment
|
||||||
/// operator.
|
/// operator.
|
||||||
///
|
///
|
||||||
/// When false, a copy assigment operator will be implicitly declared.
|
/// When false, a copy assignment operator will be implicitly declared.
|
||||||
bool hasUserDeclaredCopyAssignment() const {
|
bool hasUserDeclaredCopyAssignment() const {
|
||||||
return data().UserDeclaredSpecialMembers & SMF_CopyAssignment;
|
return data().UserDeclaredSpecialMembers & SMF_CopyAssignment;
|
||||||
}
|
}
|
||||||
|
@ -1941,7 +1941,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// \brief Determine whether this type is an Interface Like type for
|
// \brief Determine whether this type is an Interface Like type for
|
||||||
// __interface inheritence purposes.
|
// __interface inheritance purposes.
|
||||||
bool isInterfaceLike() const;
|
bool isInterfaceLike() const;
|
||||||
|
|
||||||
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
|
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
|
||||||
|
|
|
@ -586,7 +586,7 @@ public:
|
||||||
bool EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx) const;
|
bool EvaluateAsRValue(EvalResult &Result, const ASTContext &Ctx) const;
|
||||||
|
|
||||||
/// EvaluateAsBooleanCondition - Return true if this is a constant
|
/// EvaluateAsBooleanCondition - Return true if this is a constant
|
||||||
/// which we we can fold and convert to a boolean condition using
|
/// which we can fold and convert to a boolean condition using
|
||||||
/// any crazy technique that we want to, even if the expression has
|
/// any crazy technique that we want to, even if the expression has
|
||||||
/// side-effects.
|
/// side-effects.
|
||||||
bool EvaluateAsBooleanCondition(bool &Result, const ASTContext &Ctx) const;
|
bool EvaluateAsBooleanCondition(bool &Result, const ASTContext &Ctx) const;
|
||||||
|
@ -3100,7 +3100,7 @@ public:
|
||||||
static Opcode negateComparisonOp(Opcode Opc) {
|
static Opcode negateComparisonOp(Opcode Opc) {
|
||||||
switch (Opc) {
|
switch (Opc) {
|
||||||
default:
|
default:
|
||||||
llvm_unreachable("Not a comparsion operator.");
|
llvm_unreachable("Not a comparison operator.");
|
||||||
case BO_LT: return BO_GE;
|
case BO_LT: return BO_GE;
|
||||||
case BO_GT: return BO_LE;
|
case BO_GT: return BO_LE;
|
||||||
case BO_LE: return BO_GT;
|
case BO_LE: return BO_GT;
|
||||||
|
@ -3113,7 +3113,7 @@ public:
|
||||||
static Opcode reverseComparisonOp(Opcode Opc) {
|
static Opcode reverseComparisonOp(Opcode Opc) {
|
||||||
switch (Opc) {
|
switch (Opc) {
|
||||||
default:
|
default:
|
||||||
llvm_unreachable("Not a comparsion operator.");
|
llvm_unreachable("Not a comparison operator.");
|
||||||
case BO_LT: return BO_GT;
|
case BO_LT: return BO_GT;
|
||||||
case BO_GT: return BO_LT;
|
case BO_GT: return BO_LT;
|
||||||
case BO_LE: return BO_GE;
|
case BO_LE: return BO_GE;
|
||||||
|
|
|
@ -97,7 +97,7 @@ public:
|
||||||
/// Add a set of ASTContexts as possible origins.
|
/// Add a set of ASTContexts as possible origins.
|
||||||
///
|
///
|
||||||
/// Usually the set will be initialized in the constructor, but long-lived
|
/// Usually the set will be initialized in the constructor, but long-lived
|
||||||
/// ExternalASTMergers may neeed to import from new sources (for example,
|
/// ExternalASTMergers may need to import from new sources (for example,
|
||||||
/// newly-parsed source files).
|
/// newly-parsed source files).
|
||||||
///
|
///
|
||||||
/// Ensures that Importers does not gain duplicate entries as a result.
|
/// Ensures that Importers does not gain duplicate entries as a result.
|
||||||
|
|
|
@ -250,11 +250,11 @@ public:
|
||||||
NestedNameSpecifierLoc(NestedNameSpecifier *Qualifier, void *Data)
|
NestedNameSpecifierLoc(NestedNameSpecifier *Qualifier, void *Data)
|
||||||
: Qualifier(Qualifier), Data(Data) {}
|
: Qualifier(Qualifier), Data(Data) {}
|
||||||
|
|
||||||
/// \brief Evalutes true when this nested-name-specifier location is
|
/// \brief Evaluates true when this nested-name-specifier location is
|
||||||
/// non-empty.
|
/// non-empty.
|
||||||
explicit operator bool() const { return Qualifier; }
|
explicit operator bool() const { return Qualifier; }
|
||||||
|
|
||||||
/// \brief Evalutes true when this nested-name-specifier location is
|
/// \brief Evaluates true when this nested-name-specifier location is
|
||||||
/// empty.
|
/// empty.
|
||||||
bool hasQualifier() const { return Qualifier; }
|
bool hasQualifier() const { return Qualifier; }
|
||||||
|
|
||||||
|
|
|
@ -146,7 +146,7 @@ namespace clang {
|
||||||
/// from which they were produced.
|
/// from which they were produced.
|
||||||
///
|
///
|
||||||
/// By default, this visitor preorder traverses the AST. If postorder traversal
|
/// By default, this visitor preorder traverses the AST. If postorder traversal
|
||||||
/// is needed, the \c shouldTraversePostOrder method needs to be overriden
|
/// is needed, the \c shouldTraversePostOrder method needs to be overridden
|
||||||
/// to return \c true.
|
/// to return \c true.
|
||||||
template <typename Derived> class RecursiveASTVisitor {
|
template <typename Derived> class RecursiveASTVisitor {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -629,10 +629,10 @@ public:
|
||||||
/// Distribute Loop condition used when composing 'omp distribute'
|
/// Distribute Loop condition used when composing 'omp distribute'
|
||||||
/// with 'omp for' in a same construct
|
/// with 'omp for' in a same construct
|
||||||
Expr *Cond;
|
Expr *Cond;
|
||||||
/// Update of LowerBound for statically sheduled omp loops for
|
/// Update of LowerBound for statically scheduled omp loops for
|
||||||
/// outer loop in combined constructs (e.g. 'distribute parallel for')
|
/// outer loop in combined constructs (e.g. 'distribute parallel for')
|
||||||
Expr *NLB;
|
Expr *NLB;
|
||||||
/// Update of UpperBound for statically sheduled omp loops for
|
/// Update of UpperBound for statically scheduled omp loops for
|
||||||
/// outer loop in combined constructs (e.g. 'distribute parallel for')
|
/// outer loop in combined constructs (e.g. 'distribute parallel for')
|
||||||
Expr *NUB;
|
Expr *NUB;
|
||||||
};
|
};
|
||||||
|
@ -666,9 +666,9 @@ public:
|
||||||
Expr *ST;
|
Expr *ST;
|
||||||
/// \brief EnsureUpperBound -- expression UB = min(UB, NumIterations).
|
/// \brief EnsureUpperBound -- expression UB = min(UB, NumIterations).
|
||||||
Expr *EUB;
|
Expr *EUB;
|
||||||
/// \brief Update of LowerBound for statically sheduled 'omp for' loops.
|
/// \brief Update of LowerBound for statically scheduled 'omp for' loops.
|
||||||
Expr *NLB;
|
Expr *NLB;
|
||||||
/// \brief Update of UpperBound for statically sheduled 'omp for' loops.
|
/// \brief Update of UpperBound for statically scheduled 'omp for' loops.
|
||||||
Expr *NUB;
|
Expr *NUB;
|
||||||
/// \brief PreviousLowerBound - local variable passed to runtime in the
|
/// \brief PreviousLowerBound - local variable passed to runtime in the
|
||||||
/// enclosing schedule or null if that does not apply.
|
/// enclosing schedule or null if that does not apply.
|
||||||
|
|
|
@ -2010,7 +2010,7 @@ public:
|
||||||
TagDecl *getAsTagDecl() const;
|
TagDecl *getAsTagDecl() const;
|
||||||
|
|
||||||
/// If this is a pointer or reference to a RecordType, return the
|
/// If this is a pointer or reference to a RecordType, return the
|
||||||
/// CXXRecordDecl that that type refers to.
|
/// CXXRecordDecl that the type refers to.
|
||||||
///
|
///
|
||||||
/// If this is not a pointer or reference, or the type being pointed to does
|
/// If this is not a pointer or reference, or the type being pointed to does
|
||||||
/// not refer to a CXXRecordDecl, returns NULL.
|
/// not refer to a CXXRecordDecl, returns NULL.
|
||||||
|
|
|
@ -4298,7 +4298,7 @@ AST_MATCHER_P(CXXMethodDecl, ofClass,
|
||||||
InnerMatcher.matches(*Parent, Finder, Builder));
|
InnerMatcher.matches(*Parent, Finder, Builder));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Matches each method overriden by the given method. This matcher may
|
/// \brief Matches each method overridden by the given method. This matcher may
|
||||||
/// produce multiple matches.
|
/// produce multiple matches.
|
||||||
///
|
///
|
||||||
/// Given
|
/// Given
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace til {
|
||||||
|
|
||||||
// Defines an interface used to traverse SExprs. Traversals have been made as
|
// Defines an interface used to traverse SExprs. Traversals have been made as
|
||||||
// generic as possible, and are intended to handle any kind of pass over the
|
// generic as possible, and are intended to handle any kind of pass over the
|
||||||
// AST, e.g. visiters, copying, non-destructive rewriting, destructive
|
// AST, e.g. visitors, copying, non-destructive rewriting, destructive
|
||||||
// (in-place) rewriting, hashing, typing, etc.
|
// (in-place) rewriting, hashing, typing, etc.
|
||||||
//
|
//
|
||||||
// Traversals implement the functional notion of a "fold" operation on SExprs.
|
// Traversals implement the functional notion of a "fold" operation on SExprs.
|
||||||
|
|
|
@ -161,7 +161,7 @@ public:
|
||||||
/// The result of findClones can be further constrained with the constrainClones
|
/// The result of findClones can be further constrained with the constrainClones
|
||||||
/// method.
|
/// method.
|
||||||
///
|
///
|
||||||
/// This class only searches for clones in exectuable source code
|
/// This class only searches for clones in executable source code
|
||||||
/// (e.g. function bodies). Other clones (e.g. cloned comments or declarations)
|
/// (e.g. function bodies). Other clones (e.g. cloned comments or declarations)
|
||||||
/// are not supported.
|
/// are not supported.
|
||||||
class CloneDetector {
|
class CloneDetector {
|
||||||
|
|
|
@ -2661,7 +2661,7 @@ def LoopHint : Attr {
|
||||||
/// vectorize: vectorizes loop operations if State == Enable.
|
/// vectorize: vectorizes loop operations if State == Enable.
|
||||||
/// vectorize_width: vectorize loop operations with width 'Value'.
|
/// vectorize_width: vectorize loop operations with width 'Value'.
|
||||||
/// interleave: interleave multiple loop iterations if State == Enable.
|
/// interleave: interleave multiple loop iterations if State == Enable.
|
||||||
/// interleave_count: interleaves 'Value' loop interations.
|
/// interleave_count: interleaves 'Value' loop iterations.
|
||||||
/// unroll: fully unroll loop if State == Enable.
|
/// unroll: fully unroll loop if State == Enable.
|
||||||
/// unroll_count: unrolls loop 'Value' times.
|
/// unroll_count: unrolls loop 'Value' times.
|
||||||
/// distribute: attempt to distribute loop if State == Enable
|
/// distribute: attempt to distribute loop if State == Enable
|
||||||
|
|
|
@ -2798,7 +2798,7 @@ def NoThrowDocs : Documentation {
|
||||||
let Category = DocCatFunction;
|
let Category = DocCatFunction;
|
||||||
let Content = [{
|
let Content = [{
|
||||||
Clang supports the GNU style ``__attribute__((nothrow))`` and Microsoft style
|
Clang supports the GNU style ``__attribute__((nothrow))`` and Microsoft style
|
||||||
``__declspec(nothrow)`` attribute as an equivilent of `noexcept` on function
|
``__declspec(nothrow)`` attribute as an equivalent of `noexcept` on function
|
||||||
declarations. This attribute informs the compiler that the annotated function
|
declarations. This attribute informs the compiler that the annotated function
|
||||||
does not throw an exception. This prevents exception-unwinding. This attribute
|
does not throw an exception. This prevents exception-unwinding. This attribute
|
||||||
is particularly useful on functions in the C Standard Library that are
|
is particularly useful on functions in the C Standard Library that are
|
||||||
|
@ -3110,7 +3110,7 @@ the ability to distinguish between different versions of the same entity but
|
||||||
with different ABI versions supported. For example, a newer version of a class
|
with different ABI versions supported. For example, a newer version of a class
|
||||||
could have a different set of data members and thus have a different size. Using
|
could have a different set of data members and thus have a different size. Using
|
||||||
the ``abi_tag`` attribute, it is possible to have different mangled names for
|
the ``abi_tag`` attribute, it is possible to have different mangled names for
|
||||||
a global variable of the class type. Therefor, the old code could keep using
|
a global variable of the class type. Therefore, the old code could keep using
|
||||||
the old manged name and the new code will use the new mangled name with tags.
|
the old manged name and the new code will use the new mangled name with tags.
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
|
@ -751,7 +751,7 @@ def note_pragma_pack_pop_instead_reset : Note<
|
||||||
"did you intend to use '#pragma pack (pop)' instead of '#pragma pack()'?">;
|
"did you intend to use '#pragma pack (pop)' instead of '#pragma pack()'?">;
|
||||||
// Follow the Microsoft implementation.
|
// Follow the Microsoft implementation.
|
||||||
def warn_pragma_pack_show : Warning<"value of #pragma pack(show) == %0">;
|
def warn_pragma_pack_show : Warning<"value of #pragma pack(show) == %0">;
|
||||||
def warn_pragma_pack_pop_identifer_and_alignment : Warning<
|
def warn_pragma_pack_pop_identifier_and_alignment : Warning<
|
||||||
"specifying both a name and alignment to 'pop' is undefined">;
|
"specifying both a name and alignment to 'pop' is undefined">;
|
||||||
def warn_pragma_pop_failed : Warning<"#pragma %0(pop, ...) failed: %1">,
|
def warn_pragma_pop_failed : Warning<"#pragma %0(pop, ...) failed: %1">,
|
||||||
InGroup<IgnoredPragmas>;
|
InGroup<IgnoredPragmas>;
|
||||||
|
|
|
@ -30,11 +30,11 @@ namespace clang {
|
||||||
/// This supports LLVM residing in a separate repository from clang.
|
/// This supports LLVM residing in a separate repository from clang.
|
||||||
std::string getLLVMRepositoryPath();
|
std::string getLLVMRepositoryPath();
|
||||||
|
|
||||||
/// \brief Retrieves the repository revision number (or identifer) from which
|
/// \brief Retrieves the repository revision number (or identifier) from which
|
||||||
/// this Clang was built.
|
/// this Clang was built.
|
||||||
std::string getClangRevision();
|
std::string getClangRevision();
|
||||||
|
|
||||||
/// \brief Retrieves the repository revision number (or identifer) from which
|
/// \brief Retrieves the repository revision number (or identifier) from which
|
||||||
/// LLVM was built.
|
/// LLVM was built.
|
||||||
///
|
///
|
||||||
/// If Clang and LLVM are in the same repository, this returns the same
|
/// If Clang and LLVM are in the same repository, this returns the same
|
||||||
|
|
|
@ -266,7 +266,7 @@ public:
|
||||||
/// (2) finishing the entire builder.
|
/// (2) finishing the entire builder.
|
||||||
///
|
///
|
||||||
/// This is useful for emitting certain kinds of structure which
|
/// This is useful for emitting certain kinds of structure which
|
||||||
/// contain some sort of summary field, generaly a count, before any
|
/// contain some sort of summary field, generally a count, before any
|
||||||
/// of the data. By emitting a placeholder first, the structure can
|
/// of the data. By emitting a placeholder first, the structure can
|
||||||
/// be emitted eagerly.
|
/// be emitted eagerly.
|
||||||
PlaceholderPosition addPlaceholder() {
|
PlaceholderPosition addPlaceholder() {
|
||||||
|
|
|
@ -150,7 +150,7 @@ public:
|
||||||
/// Union this set of multilibs with another
|
/// Union this set of multilibs with another
|
||||||
void combineWith(const MultilibSet &MS);
|
void combineWith(const MultilibSet &MS);
|
||||||
|
|
||||||
/// Remove all of thie multilibs from the set
|
/// Remove all of the multilibs from the set
|
||||||
void clear() { Multilibs.clear(); }
|
void clear() { Multilibs.clear(); }
|
||||||
|
|
||||||
iterator begin() { return Multilibs.begin(); }
|
iterator begin() { return Multilibs.begin(); }
|
||||||
|
|
|
@ -210,7 +210,7 @@ private:
|
||||||
///
|
///
|
||||||
/// Cache contains only source locations from preamble so it is
|
/// Cache contains only source locations from preamble so it is
|
||||||
/// guaranteed that they stay valid when the SourceManager is recreated.
|
/// guaranteed that they stay valid when the SourceManager is recreated.
|
||||||
/// This cache is used when loading preambule to increase performance
|
/// This cache is used when loading preamble to increase performance
|
||||||
/// of that loading. It must be cleared when preamble is recreated.
|
/// of that loading. It must be cleared when preamble is recreated.
|
||||||
llvm::StringMap<SourceLocation> PreambleSrcLocCache;
|
llvm::StringMap<SourceLocation> PreambleSrcLocCache;
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ public:
|
||||||
/// Requires that CanReuse() is true.
|
/// Requires that CanReuse() is true.
|
||||||
/// For in-memory preambles, PrecompiledPreamble instance continues to own the
|
/// For in-memory preambles, PrecompiledPreamble instance continues to own the
|
||||||
/// MemoryBuffer with the Preamble after this method returns. The caller is
|
/// MemoryBuffer with the Preamble after this method returns. The caller is
|
||||||
/// reponsible for making sure the PrecompiledPreamble instance outlives the
|
/// responsible for making sure the PrecompiledPreamble instance outlives the
|
||||||
/// compiler run and the AST that will be using the PCH.
|
/// compiler run and the AST that will be using the PCH.
|
||||||
void AddImplicitPreamble(CompilerInvocation &CI,
|
void AddImplicitPreamble(CompilerInvocation &CI,
|
||||||
IntrusiveRefCntPtr<vfs::FileSystem> &VFS,
|
IntrusiveRefCntPtr<vfs::FileSystem> &VFS,
|
||||||
|
|
|
@ -277,7 +277,7 @@ public:
|
||||||
unsigned angledDirIdx, unsigned systemDirIdx,
|
unsigned angledDirIdx, unsigned systemDirIdx,
|
||||||
bool noCurDirSearch) {
|
bool noCurDirSearch) {
|
||||||
assert(angledDirIdx <= systemDirIdx && systemDirIdx <= dirs.size() &&
|
assert(angledDirIdx <= systemDirIdx && systemDirIdx <= dirs.size() &&
|
||||||
"Directory indicies are unordered");
|
"Directory indices are unordered");
|
||||||
SearchDirs = dirs;
|
SearchDirs = dirs;
|
||||||
AngledDirIdx = angledDirIdx;
|
AngledDirIdx = angledDirIdx;
|
||||||
SystemDirIdx = systemDirIdx;
|
SystemDirIdx = systemDirIdx;
|
||||||
|
|
|
@ -199,7 +199,7 @@ private:
|
||||||
llvm::DenseMap<const DirectoryEntry *, Module *> UmbrellaDirs;
|
llvm::DenseMap<const DirectoryEntry *, Module *> UmbrellaDirs;
|
||||||
|
|
||||||
/// \brief A generation counter that is used to test whether modules of the
|
/// \brief A generation counter that is used to test whether modules of the
|
||||||
/// same name may shadow or are illegal redefintions.
|
/// same name may shadow or are illegal redefinitions.
|
||||||
///
|
///
|
||||||
/// Modules from earlier scopes may shadow modules from later ones.
|
/// Modules from earlier scopes may shadow modules from later ones.
|
||||||
/// Modules from the same scope may not have the same name.
|
/// Modules from the same scope may not have the same name.
|
||||||
|
|
|
@ -198,7 +198,7 @@ private:
|
||||||
/// the tokens just expanded through __VA_OPT__ processing. These (sub)
|
/// the tokens just expanded through __VA_OPT__ processing. These (sub)
|
||||||
/// sequence of tokens are folded into one stringified token.
|
/// sequence of tokens are folded into one stringified token.
|
||||||
///
|
///
|
||||||
/// \param[in] VCtx - contains relevent contextual information about the
|
/// \param[in] VCtx - contains relevant contextual information about the
|
||||||
/// state of the tokens around and including the __VA_OPT__ token, necessary
|
/// state of the tokens around and including the __VA_OPT__ token, necessary
|
||||||
/// for stringification.
|
/// for stringification.
|
||||||
void stringifyVAOPTContents(SmallVectorImpl<Token> &ReplacementToks,
|
void stringifyVAOPTContents(SmallVectorImpl<Token> &ReplacementToks,
|
||||||
|
|
|
@ -1097,7 +1097,7 @@ private:
|
||||||
|
|
||||||
/// \brief Whether this member function had an associated template
|
/// \brief Whether this member function had an associated template
|
||||||
/// scope. When true, D is a template declaration.
|
/// scope. When true, D is a template declaration.
|
||||||
/// othewise, it is a member function declaration.
|
/// otherwise, it is a member function declaration.
|
||||||
bool TemplateScope;
|
bool TemplateScope;
|
||||||
|
|
||||||
/// DefaultArgs - Contains the parameters of the function and
|
/// DefaultArgs - Contains the parameters of the function and
|
||||||
|
@ -1153,7 +1153,7 @@ private:
|
||||||
|
|
||||||
/// \brief Whether this class had an associated template
|
/// \brief Whether this class had an associated template
|
||||||
/// scope. When true, TagOrTemplate is a template declaration;
|
/// scope. When true, TagOrTemplate is a template declaration;
|
||||||
/// othewise, it is a tag declaration.
|
/// otherwise, it is a tag declaration.
|
||||||
bool TemplateScope : 1;
|
bool TemplateScope : 1;
|
||||||
|
|
||||||
/// \brief Whether this class is an __interface.
|
/// \brief Whether this class is an __interface.
|
||||||
|
|
|
@ -322,7 +322,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Type tag information is stored immediately following the arguments, if
|
/// Type tag information is stored immediately following the arguments, if
|
||||||
/// any, at the end of the object. They are mutually exlusive with
|
/// any, at the end of the object. They are mutually exclusive with
|
||||||
/// availability slots.
|
/// availability slots.
|
||||||
TypeTagForDatatypeData &getTypeTagForDatatypeDataSlot() {
|
TypeTagForDatatypeData &getTypeTagForDatatypeDataSlot() {
|
||||||
return *reinterpret_cast<TypeTagForDatatypeData*>(getArgsBuffer()+NumArgs);
|
return *reinterpret_cast<TypeTagForDatatypeData*>(getArgsBuffer()+NumArgs);
|
||||||
|
|
|
@ -291,9 +291,9 @@ public:
|
||||||
|
|
||||||
/// \brief Simple predicate used by the default RankCandidate to
|
/// \brief Simple predicate used by the default RankCandidate to
|
||||||
/// determine whether to return an edit distance of 0 or InvalidDistance.
|
/// determine whether to return an edit distance of 0 or InvalidDistance.
|
||||||
/// This can be overrided by validators that only need to determine if a
|
/// This can be overridden by validators that only need to determine if a
|
||||||
/// candidate is viable, without ranking potentially viable candidates.
|
/// candidate is viable, without ranking potentially viable candidates.
|
||||||
/// Only ValidateCandidate or RankCandidate need to be overriden by a
|
/// Only ValidateCandidate or RankCandidate need to be overridden by a
|
||||||
/// callback wishing to check the viability of correction candidates.
|
/// callback wishing to check the viability of correction candidates.
|
||||||
/// The default predicate always returns true if the candidate is not a type
|
/// The default predicate always returns true if the candidate is not a type
|
||||||
/// name or keyword, true for types if WantTypeSpecifiers is true, and true
|
/// name or keyword, true for types if WantTypeSpecifiers is true, and true
|
||||||
|
|
|
@ -367,7 +367,7 @@ public:
|
||||||
/// specified.
|
/// specified.
|
||||||
/// @param [in] C The optional checker parameter that can be used to restrict
|
/// @param [in] C The optional checker parameter that can be used to restrict
|
||||||
/// the search to the options of this particular checker (and its parents
|
/// the search to the options of this particular checker (and its parents
|
||||||
/// dependening on search mode).
|
/// depending on search mode).
|
||||||
/// @param [in] SearchInParents If set to true and the searched option was not
|
/// @param [in] SearchInParents If set to true and the searched option was not
|
||||||
/// specified for the given checker the options for the parent packages will
|
/// specified for the given checker the options for the parent packages will
|
||||||
/// be searched as well. The inner packages take precedence over the outer
|
/// be searched as well. The inner packages take precedence over the outer
|
||||||
|
@ -385,7 +385,7 @@ public:
|
||||||
/// specified.
|
/// specified.
|
||||||
/// @param [in] C The optional checker parameter that can be used to restrict
|
/// @param [in] C The optional checker parameter that can be used to restrict
|
||||||
/// the search to the options of this particular checker (and its parents
|
/// the search to the options of this particular checker (and its parents
|
||||||
/// dependening on search mode).
|
/// depending on search mode).
|
||||||
/// @param [in] SearchInParents If set to true and the searched option was not
|
/// @param [in] SearchInParents If set to true and the searched option was not
|
||||||
/// specified for the given checker the options for the parent packages will
|
/// specified for the given checker the options for the parent packages will
|
||||||
/// be searched as well. The inner packages take precedence over the outer
|
/// be searched as well. The inner packages take precedence over the outer
|
||||||
|
@ -402,7 +402,7 @@ public:
|
||||||
/// specified.
|
/// specified.
|
||||||
/// @param [in] C The optional checker parameter that can be used to restrict
|
/// @param [in] C The optional checker parameter that can be used to restrict
|
||||||
/// the search to the options of this particular checker (and its parents
|
/// the search to the options of this particular checker (and its parents
|
||||||
/// dependening on search mode).
|
/// depending on search mode).
|
||||||
/// @param [in] SearchInParents If set to true and the searched option was not
|
/// @param [in] SearchInParents If set to true and the searched option was not
|
||||||
/// specified for the given checker the options for the parent packages will
|
/// specified for the given checker the options for the parent packages will
|
||||||
/// be searched as well. The inner packages take precedence over the outer
|
/// be searched as well. The inner packages take precedence over the outer
|
||||||
|
@ -419,7 +419,7 @@ public:
|
||||||
/// specified.
|
/// specified.
|
||||||
/// @param [in] C The optional checker parameter that can be used to restrict
|
/// @param [in] C The optional checker parameter that can be used to restrict
|
||||||
/// the search to the options of this particular checker (and its parents
|
/// the search to the options of this particular checker (and its parents
|
||||||
/// dependening on search mode).
|
/// depending on search mode).
|
||||||
/// @param [in] SearchInParents If set to true and the searched option was not
|
/// @param [in] SearchInParents If set to true and the searched option was not
|
||||||
/// specified for the given checker the options for the parent packages will
|
/// specified for the given checker the options for the parent packages will
|
||||||
/// be searched as well. The inner packages take precedence over the outer
|
/// be searched as well. The inner packages take precedence over the outer
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
//===--- BugType.h - Bug Information Desciption ----------------*- C++ -*-===//
|
//===--- BugType.h - Bug Information Description ---------------*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
/// @param FuncName The name of the function that will be matched.
|
/// @param FuncName The name of the function that will be matched.
|
||||||
///
|
///
|
||||||
/// @param RequiredArgs The number of arguments that is expected to match a
|
/// @param RequiredArgs The number of arguments that is expected to match a
|
||||||
/// call. Omit this parameter to match every occurance of call with a given
|
/// call. Omit this parameter to match every occurrence of call with a given
|
||||||
/// name regardless the number of arguments.
|
/// name regardless the number of arguments.
|
||||||
CallDescription(StringRef FuncName, unsigned RequiredArgs = NoArgRequirement)
|
CallDescription(StringRef FuncName, unsigned RequiredArgs = NoArgRequirement)
|
||||||
: FuncName(FuncName), RequiredArgs(RequiredArgs) {}
|
: FuncName(FuncName), RequiredArgs(RequiredArgs) {}
|
||||||
|
|
|
@ -241,7 +241,7 @@ protected:
|
||||||
/// the builder dies.
|
/// the builder dies.
|
||||||
ExplodedNodeSet &Frontier;
|
ExplodedNodeSet &Frontier;
|
||||||
|
|
||||||
/// Checkes if the results are ready.
|
/// Checks if the results are ready.
|
||||||
virtual bool checkResults() {
|
virtual bool checkResults() {
|
||||||
return Finalized;
|
return Finalized;
|
||||||
}
|
}
|
||||||
|
|
|
@ -510,7 +510,7 @@ private:
|
||||||
/// \brief Value representing pointer-to-member.
|
/// \brief Value representing pointer-to-member.
|
||||||
///
|
///
|
||||||
/// This value is qualified as NonLoc because neither loading nor storing
|
/// This value is qualified as NonLoc because neither loading nor storing
|
||||||
/// operations are aplied to it. Instead, the analyzer uses the L-value coming
|
/// operations are applied to it. Instead, the analyzer uses the L-value coming
|
||||||
/// from pointer-to-member applied to an object.
|
/// from pointer-to-member applied to an object.
|
||||||
/// This SVal is represented by a DeclaratorDecl which can be a member function
|
/// This SVal is represented by a DeclaratorDecl which can be a member function
|
||||||
/// pointer or a member data pointer and a list of CXXBaseSpecifiers. This list
|
/// pointer or a member data pointer and a list of CXXBaseSpecifiers. This list
|
||||||
|
|
|
@ -72,7 +72,7 @@ public:
|
||||||
///
|
///
|
||||||
/// Returns file name stored in this trie that is equivalent to 'FileName'
|
/// Returns file name stored in this trie that is equivalent to 'FileName'
|
||||||
/// according to 'Comparator', if it can be uniquely identified. If there
|
/// according to 'Comparator', if it can be uniquely identified. If there
|
||||||
/// are no matches an empty \c StringRef is returned. If there are ambigious
|
/// are no matches an empty \c StringRef is returned. If there are ambiguous
|
||||||
/// matches, an empty \c StringRef is returned and a corresponding message
|
/// matches, an empty \c StringRef is returned and a corresponding message
|
||||||
/// written to 'Error'.
|
/// written to 'Error'.
|
||||||
StringRef findEquivalent(StringRef FileName,
|
StringRef findEquivalent(StringRef FileName,
|
||||||
|
|
|
@ -56,7 +56,7 @@ public:
|
||||||
class RefactoringActionRule : public RefactoringActionRuleBase {
|
class RefactoringActionRule : public RefactoringActionRuleBase {
|
||||||
public:
|
public:
|
||||||
/// Returns true when the rule has a source selection requirement that has
|
/// Returns true when the rule has a source selection requirement that has
|
||||||
/// to be fullfilled before refactoring can be performed.
|
/// to be fulfilled before refactoring can be performed.
|
||||||
virtual bool hasSelectionRequirement() = 0;
|
virtual bool hasSelectionRequirement() = 0;
|
||||||
|
|
||||||
/// Traverses each refactoring option used by the rule and invokes the
|
/// Traverses each refactoring option used by the rule and invokes the
|
||||||
|
|
|
@ -26,8 +26,8 @@ class RefactoringResultConsumer {
|
||||||
public:
|
public:
|
||||||
virtual ~RefactoringResultConsumer() {}
|
virtual ~RefactoringResultConsumer() {}
|
||||||
|
|
||||||
/// Handles an initation or an invication error. An initiation error typically
|
/// Handles an initiation or an invication error. An initiation error typically
|
||||||
/// has a \c DiagnosticError payload that describes why initation failed.
|
/// has a \c DiagnosticError payload that describes why initiation failed.
|
||||||
virtual void handleError(llvm::Error Err) = 0;
|
virtual void handleError(llvm::Error Err) = 0;
|
||||||
|
|
||||||
/// Handles the source replacements that are produced by a refactoring action.
|
/// Handles the source replacements that are produced by a refactoring action.
|
||||||
|
|
|
@ -82,7 +82,7 @@ private:
|
||||||
Expected<AtomicChanges>
|
Expected<AtomicChanges>
|
||||||
createSourceReplacements(RefactoringRuleContext &Context) override;
|
createSourceReplacements(RefactoringRuleContext &Context) override;
|
||||||
|
|
||||||
// A NamedDecl which indentifies the symbol being renamed.
|
// A NamedDecl which identifies the symbol being renamed.
|
||||||
const NamedDecl *ND;
|
const NamedDecl *ND;
|
||||||
// The new qualified name to change the symbol to.
|
// The new qualified name to change the symbol to.
|
||||||
std::string NewQualifiedName;
|
std::string NewQualifiedName;
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace tooling {
|
||||||
/// A name of a symbol.
|
/// A name of a symbol.
|
||||||
///
|
///
|
||||||
/// Symbol's name can be composed of multiple strings. For example, Objective-C
|
/// Symbol's name can be composed of multiple strings. For example, Objective-C
|
||||||
/// methods can contain multiple argument lables:
|
/// methods can contain multiple argument labels:
|
||||||
///
|
///
|
||||||
/// \code
|
/// \code
|
||||||
/// - (void) myMethodNamePiece: (int)x anotherNamePieces:(int)y;
|
/// - (void) myMethodNamePiece: (int)x anotherNamePieces:(int)y;
|
||||||
|
|
|
@ -339,7 +339,7 @@ public:
|
||||||
///
|
///
|
||||||
/// \param Action Tool action.
|
/// \param Action Tool action.
|
||||||
///
|
///
|
||||||
/// \returns 0 on success; 1 if any error occured; 2 if there is no error but
|
/// \returns 0 on success; 1 if any error occurred; 2 if there is no error but
|
||||||
/// some files are skipped due to missing compile commands.
|
/// some files are skipped due to missing compile commands.
|
||||||
int run(ToolAction *Action);
|
int run(ToolAction *Action);
|
||||||
|
|
||||||
|
|
|
@ -1101,7 +1101,7 @@ static bool MatchTwoAttributeLists(const AttrVec &Attrs1, const AttrVec &Attrs2,
|
||||||
for (unsigned i = 0, e = Attrs1.size(); i != e; i++) {
|
for (unsigned i = 0, e = Attrs1.size(); i != e; i++) {
|
||||||
bool match = false;
|
bool match = false;
|
||||||
for (unsigned j = 0, f = Attrs2.size(); j != f; j++) {
|
for (unsigned j = 0, f = Attrs2.size(); j != f; j++) {
|
||||||
// Matching attribute kind only. Except for Availabilty attributes,
|
// Matching attribute kind only. Except for Availability attributes,
|
||||||
// we are not getting into details of the attributes. For all practical purposes
|
// we are not getting into details of the attributes. For all practical purposes
|
||||||
// this is sufficient.
|
// this is sufficient.
|
||||||
if (Attrs1[i]->getKind() == Attrs2[j]->getKind()) {
|
if (Attrs1[i]->getKind() == Attrs2[j]->getKind()) {
|
||||||
|
|
|
@ -4463,7 +4463,7 @@ bool ASTContext::QIdProtocolsAdoptObjCObjectProtocols(QualType QT,
|
||||||
CollectInheritedProtocols(IDecl, InheritedProtocols);
|
CollectInheritedProtocols(IDecl, InheritedProtocols);
|
||||||
if (InheritedProtocols.empty())
|
if (InheritedProtocols.empty())
|
||||||
return false;
|
return false;
|
||||||
// Check that if every protocol in list of id<plist> conforms to a protcol
|
// Check that if every protocol in list of id<plist> conforms to a protocol
|
||||||
// of IDecl's, then bridge casting is ok.
|
// of IDecl's, then bridge casting is ok.
|
||||||
bool Conforms = false;
|
bool Conforms = false;
|
||||||
for (auto *Proto : OPT->quals()) {
|
for (auto *Proto : OPT->quals()) {
|
||||||
|
@ -6545,7 +6545,7 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string& S,
|
||||||
S += "{objc_class=}";
|
S += "{objc_class=}";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// TODO: Double check to make sure this intentially falls through.
|
// TODO: Double check to make sure this intentionally falls through.
|
||||||
LLVM_FALLTHROUGH;
|
LLVM_FALLTHROUGH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6584,7 +6584,7 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string& S,
|
||||||
if (OPT->isObjCClassType() || OPT->isObjCQualifiedClassType()) {
|
if (OPT->isObjCClassType() || OPT->isObjCQualifiedClassType()) {
|
||||||
// FIXME: Consider if we need to output qualifiers for 'Class<p>'.
|
// FIXME: Consider if we need to output qualifiers for 'Class<p>'.
|
||||||
// Since this is a binary compatibility issue, need to consult with runtime
|
// Since this is a binary compatibility issue, need to consult with runtime
|
||||||
// folks. Fortunately, this is a *very* obsure construct.
|
// folks. Fortunately, this is a *very* obscure construct.
|
||||||
S += '#';
|
S += '#';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1765,7 +1765,7 @@ void CXXRecordDecl::completeDefinition(CXXFinalOverriderMap *FinalOverriders) {
|
||||||
SOEnd = M->second.end();
|
SOEnd = M->second.end();
|
||||||
SO != SOEnd && !Done; ++SO) {
|
SO != SOEnd && !Done; ++SO) {
|
||||||
assert(SO->second.size() > 0 &&
|
assert(SO->second.size() > 0 &&
|
||||||
"All virtual functions have overridding virtual functions");
|
"All virtual functions have overriding virtual functions");
|
||||||
|
|
||||||
// C++ [class.abstract]p4:
|
// C++ [class.abstract]p4:
|
||||||
// A class is abstract if it contains or inherits at least one
|
// A class is abstract if it contains or inherits at least one
|
||||||
|
@ -2365,7 +2365,7 @@ bool CXXConstructorDecl::isSpecializationCopyingObject() const {
|
||||||
ASTContext &Context = getASTContext();
|
ASTContext &Context = getASTContext();
|
||||||
CanQualType ParamType = Context.getCanonicalType(Param->getType());
|
CanQualType ParamType = Context.getCanonicalType(Param->getType());
|
||||||
|
|
||||||
// Is it the same as our our class type?
|
// Is it the same as our class type?
|
||||||
CanQualType ClassTy
|
CanQualType ClassTy
|
||||||
= Context.getCanonicalType(Context.getTagDeclType(getParent()));
|
= Context.getCanonicalType(Context.getTagDeclType(getParent()));
|
||||||
if (ParamType.getUnqualifiedType() != ClassTy)
|
if (ParamType.getUnqualifiedType() != ClassTy)
|
||||||
|
|
|
@ -1138,8 +1138,8 @@ static void CollectOverriddenMethodsRecurse(const ObjCContainerDecl *Container,
|
||||||
if (!Container)
|
if (!Container)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// In categories look for overriden methods from protocols. A method from
|
// In categories look for overridden methods from protocols. A method from
|
||||||
// category is not "overriden" since it is considered as the "same" method
|
// category is not "overridden" since it is considered as the "same" method
|
||||||
// (same USR) as the one from the interface.
|
// (same USR) as the one from the interface.
|
||||||
if (const ObjCCategoryDecl *
|
if (const ObjCCategoryDecl *
|
||||||
Category = dyn_cast<ObjCCategoryDecl>(Container)) {
|
Category = dyn_cast<ObjCCategoryDecl>(Container)) {
|
||||||
|
|
|
@ -1009,7 +1009,7 @@ void MicrosoftCXXNameMangler::mangleNestedName(const NamedDecl *ND) {
|
||||||
if (const auto *ND = dyn_cast<NamedDecl>(MC))
|
if (const auto *ND = dyn_cast<NamedDecl>(MC))
|
||||||
mangleUnqualifiedName(ND);
|
mangleUnqualifiedName(ND);
|
||||||
// MS ABI and Itanium manglings are in inverted scopes. In the case of a
|
// MS ABI and Itanium manglings are in inverted scopes. In the case of a
|
||||||
// RecordDecl, mangle the entire scope hierachy at this point rather than
|
// RecordDecl, mangle the entire scope hierarchy at this point rather than
|
||||||
// just the unqualified name to get the ordering correct.
|
// just the unqualified name to get the ordering correct.
|
||||||
if (const auto *RD = dyn_cast<RecordDecl>(DC))
|
if (const auto *RD = dyn_cast<RecordDecl>(DC))
|
||||||
mangleName(RD);
|
mangleName(RD);
|
||||||
|
|
|
@ -56,7 +56,7 @@ static StmtClassNameTable &getStmtInfoTableEntry(Stmt::StmtClass E) {
|
||||||
if (Initialized)
|
if (Initialized)
|
||||||
return StmtClassInfo[E];
|
return StmtClassInfo[E];
|
||||||
|
|
||||||
// Intialize the table on the first use.
|
// Initialize the table on the first use.
|
||||||
Initialized = true;
|
Initialized = true;
|
||||||
#define ABSTRACT_STMT(STMT)
|
#define ABSTRACT_STMT(STMT)
|
||||||
#define STMT(CLASS, PARENT) \
|
#define STMT(CLASS, PARENT) \
|
||||||
|
|
|
@ -2995,7 +2995,7 @@ void VFTableBuilder::AddMethods(BaseSubobject Base, unsigned BaseDepth,
|
||||||
}
|
}
|
||||||
|
|
||||||
// In case we need a return adjustment, we'll add a new slot for
|
// In case we need a return adjustment, we'll add a new slot for
|
||||||
// the overrider. Mark the overriden method as shadowed by the new slot.
|
// the overrider. Mark the overridden method as shadowed by the new slot.
|
||||||
OverriddenMethodInfo.Shadowed = true;
|
OverriddenMethodInfo.Shadowed = true;
|
||||||
|
|
||||||
// Force a special name mangling for a return-adjusting thunk
|
// Force a special name mangling for a return-adjusting thunk
|
||||||
|
|
|
@ -524,7 +524,7 @@ void Parser::addExpressionCompletions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Parse an <Expresssion>
|
/// \brief Parse an <Expression>
|
||||||
bool Parser::parseExpressionImpl(VariantValue *Value) {
|
bool Parser::parseExpressionImpl(VariantValue *Value) {
|
||||||
switch (Tokenizer->nextTokenKind()) {
|
switch (Tokenizer->nextTokenKind()) {
|
||||||
case TokenInfo::TK_Literal:
|
case TokenInfo::TK_Literal:
|
||||||
|
|
|
@ -381,7 +381,7 @@ void RecursiveCloneTypeIIHashConstraint::constrain(
|
||||||
for (unsigned i = 0; i < StmtsByHash.size() - 1; ++i) {
|
for (unsigned i = 0; i < StmtsByHash.size() - 1; ++i) {
|
||||||
const auto Current = StmtsByHash[i];
|
const auto Current = StmtsByHash[i];
|
||||||
|
|
||||||
// It's likely that we just found an sequence of StmtSequences that
|
// It's likely that we just found a sequence of StmtSequences that
|
||||||
// represent a CloneGroup, so we create a new group and start checking and
|
// represent a CloneGroup, so we create a new group and start checking and
|
||||||
// adding the StmtSequences in this sequence.
|
// adding the StmtSequences in this sequence.
|
||||||
CloneDetector::CloneGroup NewGroup;
|
CloneDetector::CloneGroup NewGroup;
|
||||||
|
|
|
@ -817,7 +817,7 @@ void SExprBuilder::enterCFG(CFG *Cfg, const NamedDecl *D,
|
||||||
}
|
}
|
||||||
|
|
||||||
void SExprBuilder::enterCFGBlock(const CFGBlock *B) {
|
void SExprBuilder::enterCFGBlock(const CFGBlock *B) {
|
||||||
// Intialize TIL basic block and add it to the CFG.
|
// Initialize TIL basic block and add it to the CFG.
|
||||||
CurrentBB = lookupBlock(B);
|
CurrentBB = lookupBlock(B);
|
||||||
CurrentBB->reservePredecessors(B->pred_size());
|
CurrentBB->reservePredecessors(B->pred_size());
|
||||||
Scfg->add(CurrentBB);
|
Scfg->add(CurrentBB);
|
||||||
|
@ -892,7 +892,7 @@ void SExprBuilder::exitCFGBlockBody(const CFGBlock *B) {
|
||||||
til::BasicBlock *BB1 = *It ? lookupBlock(*It) : nullptr;
|
til::BasicBlock *BB1 = *It ? lookupBlock(*It) : nullptr;
|
||||||
++It;
|
++It;
|
||||||
til::BasicBlock *BB2 = *It ? lookupBlock(*It) : nullptr;
|
til::BasicBlock *BB2 = *It ? lookupBlock(*It) : nullptr;
|
||||||
// FIXME: make sure these arent' critical edges.
|
// FIXME: make sure these aren't critical edges.
|
||||||
auto *Tm = new (Arena) til::Branch(C, BB1, BB2);
|
auto *Tm = new (Arena) til::Branch(C, BB1, BB2);
|
||||||
CurrentBB->setTerminator(Tm);
|
CurrentBB->setTerminator(Tm);
|
||||||
}
|
}
|
||||||
|
|
|
@ -470,7 +470,7 @@ DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, SourceLocation Loc,
|
||||||
Result = diag::Severity::Error;
|
Result = diag::Severity::Error;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If -Wfatal-errors is enabled, map errors to fatal unless explicity
|
// If -Wfatal-errors is enabled, map errors to fatal unless explicitly
|
||||||
// disabled.
|
// disabled.
|
||||||
if (Result == diag::Severity::Error) {
|
if (Result == diag::Severity::Error) {
|
||||||
if (State->ErrorsAsFatal && !Mapping.hasNoErrorAsFatal())
|
if (State->ErrorsAsFatal && !Mapping.hasNoErrorAsFatal())
|
||||||
|
|
|
@ -1887,7 +1887,7 @@ void SourceManager::associateFileChunkWithMacroArgExp(
|
||||||
// 0 -> SourceLocation()
|
// 0 -> SourceLocation()
|
||||||
// 100 -> Expanded loc #1
|
// 100 -> Expanded loc #1
|
||||||
// 110 -> SourceLocation()
|
// 110 -> SourceLocation()
|
||||||
// and we found a new macro FileID that lexed from offet 105 with length 3,
|
// and we found a new macro FileID that lexed from offset 105 with length 3,
|
||||||
// the new map will be:
|
// the new map will be:
|
||||||
// 0 -> SourceLocation()
|
// 0 -> SourceLocation()
|
||||||
// 100 -> Expanded loc #1
|
// 100 -> Expanded loc #1
|
||||||
|
|
|
@ -96,7 +96,7 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts,
|
||||||
Builder.defineMacro("_CALL_ELF", "2");
|
Builder.defineMacro("_CALL_ELF", "2");
|
||||||
|
|
||||||
// This typically is only for a new enough linker (bfd >= 2.16.2 or gold), but
|
// This typically is only for a new enough linker (bfd >= 2.16.2 or gold), but
|
||||||
// our suppport post-dates this and it should work on all 64-bit ppc linux
|
// our support post-dates this and it should work on all 64-bit ppc linux
|
||||||
// platforms. It is guaranteed to work on all elfv2 platforms.
|
// platforms. It is guaranteed to work on all elfv2 platforms.
|
||||||
if (getTriple().getOS() == llvm::Triple::Linux && PointerWidth == 64)
|
if (getTriple().getOS() == llvm::Triple::Linux && PointerWidth == 64)
|
||||||
Builder.defineMacro("_CALL_LINUX", "1");
|
Builder.defineMacro("_CALL_LINUX", "1");
|
||||||
|
|
|
@ -1533,7 +1533,7 @@ bool X86TargetInfo::validateAsmConstraint(
|
||||||
case 'y': // Any MMX register.
|
case 'y': // Any MMX register.
|
||||||
case 'v': // Any {X,Y,Z}MM register (Arch & context dependent)
|
case 'v': // Any {X,Y,Z}MM register (Arch & context dependent)
|
||||||
case 'x': // Any SSE register.
|
case 'x': // Any SSE register.
|
||||||
case 'k': // Any AVX512 mask register (same as Yk, additionaly allows k0
|
case 'k': // Any AVX512 mask register (same as Yk, additionally allows k0
|
||||||
// for intermideate k reg operations).
|
// for intermideate k reg operations).
|
||||||
case 'Q': // Any register accessible as [r]h: a, b, c, and d.
|
case 'Q': // Any register accessible as [r]h: a, b, c, and d.
|
||||||
case 'R': // "Legacy" registers: ax, bx, cx, dx, di, si, sp, bp.
|
case 'R': // "Legacy" registers: ax, bx, cx, dx, di, si, sp, bp.
|
||||||
|
|
|
@ -821,7 +821,7 @@ static PassBuilder::OptimizationLevel mapToLevel(const CodeGenOptions &Opts) {
|
||||||
case 2:
|
case 2:
|
||||||
switch (Opts.OptimizeSize) {
|
switch (Opts.OptimizeSize) {
|
||||||
default:
|
default:
|
||||||
llvm_unreachable("Invalide optimization level for size!");
|
llvm_unreachable("Invalid optimization level for size!");
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
return PassBuilder::O2;
|
return PassBuilder::O2;
|
||||||
|
|
|
@ -66,7 +66,7 @@ static llvm::Constant *buildDisposeHelper(CodeGenModule &CGM,
|
||||||
/// buildBlockDescriptor - Build the block descriptor meta-data for a block.
|
/// buildBlockDescriptor - Build the block descriptor meta-data for a block.
|
||||||
/// buildBlockDescriptor is accessed from 5th field of the Block_literal
|
/// buildBlockDescriptor is accessed from 5th field of the Block_literal
|
||||||
/// meta-data and contains stationary information about the block literal.
|
/// meta-data and contains stationary information about the block literal.
|
||||||
/// Its definition will have 4 (or optinally 6) words.
|
/// Its definition will have 4 (or optionally 6) words.
|
||||||
/// \code
|
/// \code
|
||||||
/// struct Block_descriptor {
|
/// struct Block_descriptor {
|
||||||
/// unsigned long reserved;
|
/// unsigned long reserved;
|
||||||
|
@ -330,7 +330,7 @@ static void initializeForBlockHeader(CodeGenModule &CGM, CGBlockInfo &info,
|
||||||
info.BlockSize = CharUnits::fromQuantity(Offset);
|
info.BlockSize = CharUnits::fromQuantity(Offset);
|
||||||
} else {
|
} else {
|
||||||
// The header is basically 'struct { void *; int; int; void *; void *; }'.
|
// The header is basically 'struct { void *; int; int; void *; void *; }'.
|
||||||
// Assert that that struct is packed.
|
// Assert that the struct is packed.
|
||||||
assert(CGM.getIntSize() <= CGM.getPointerSize());
|
assert(CGM.getIntSize() <= CGM.getPointerSize());
|
||||||
assert(CGM.getIntAlign() <= CGM.getPointerAlign());
|
assert(CGM.getIntAlign() <= CGM.getPointerAlign());
|
||||||
assert((2 * CGM.getIntSize()).isMultipleOf(CGM.getPointerAlign()));
|
assert((2 * CGM.getIntSize()).isMultipleOf(CGM.getPointerAlign()));
|
||||||
|
@ -887,7 +887,7 @@ llvm::Value *CodeGenFunction::EmitBlockLiteral(const CGBlockInfo &blockInfo) {
|
||||||
const CGBlockInfo::Capture &enclosingCapture =
|
const CGBlockInfo::Capture &enclosingCapture =
|
||||||
BlockInfo->getCapture(variable);
|
BlockInfo->getCapture(variable);
|
||||||
|
|
||||||
// This is a [[type]]*, except that a byref entry wil just be an i8**.
|
// This is a [[type]]*, except that a byref entry will just be an i8**.
|
||||||
src = Builder.CreateStructGEP(LoadBlockStruct(),
|
src = Builder.CreateStructGEP(LoadBlockStruct(),
|
||||||
enclosingCapture.getIndex(),
|
enclosingCapture.getIndex(),
|
||||||
enclosingCapture.getOffset(),
|
enclosingCapture.getOffset(),
|
||||||
|
|
|
@ -384,7 +384,7 @@ EncompassingIntegerType(ArrayRef<struct WidthAndSignedness> Types) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// The encompassing type must have a width greater than or equal to the width
|
// The encompassing type must have a width greater than or equal to the width
|
||||||
// of the specified types. Aditionally, if the encompassing type is signed,
|
// of the specified types. Additionally, if the encompassing type is signed,
|
||||||
// its width must be strictly greater than the width of any unsigned types
|
// its width must be strictly greater than the width of any unsigned types
|
||||||
// given.
|
// given.
|
||||||
unsigned Width = 0;
|
unsigned Width = 0;
|
||||||
|
@ -478,7 +478,7 @@ CodeGenFunction::emitBuiltinObjectSize(const Expr *E, unsigned Type,
|
||||||
|
|
||||||
// LLVM only supports 0 and 2, make sure that we pass along that as a boolean.
|
// LLVM only supports 0 and 2, make sure that we pass along that as a boolean.
|
||||||
Value *Min = Builder.getInt1((Type & 2) != 0);
|
Value *Min = Builder.getInt1((Type & 2) != 0);
|
||||||
// For GCC compatability, __builtin_object_size treat NULL as unknown size.
|
// For GCC compatibility, __builtin_object_size treat NULL as unknown size.
|
||||||
Value *NullIsUnknown = Builder.getTrue();
|
Value *NullIsUnknown = Builder.getTrue();
|
||||||
return Builder.CreateCall(F, {Ptr, Min, NullIsUnknown});
|
return Builder.CreateCall(F, {Ptr, Min, NullIsUnknown});
|
||||||
}
|
}
|
||||||
|
@ -2096,7 +2096,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
|
||||||
case Builtin::BI__sync_synchronize: {
|
case Builtin::BI__sync_synchronize: {
|
||||||
// We assume this is supposed to correspond to a C++0x-style
|
// We assume this is supposed to correspond to a C++0x-style
|
||||||
// sequentially-consistent fence (i.e. this is only usable for
|
// sequentially-consistent fence (i.e. this is only usable for
|
||||||
// synchonization, not device I/O or anything like that). This intrinsic
|
// synchronization, not device I/O or anything like that). This intrinsic
|
||||||
// is really badly designed in the sense that in theory, there isn't
|
// is really badly designed in the sense that in theory, there isn't
|
||||||
// any way to safely use it... but in practice, it mostly works
|
// any way to safely use it... but in practice, it mostly works
|
||||||
// to use it with non-atomic loads and stores to get acquire/release
|
// to use it with non-atomic loads and stores to get acquire/release
|
||||||
|
@ -3319,7 +3319,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
|
||||||
llvm::Triple::getArchTypePrefix(getTarget().getTriple().getArch());
|
llvm::Triple::getArchTypePrefix(getTarget().getTriple().getArch());
|
||||||
if (!Prefix.empty()) {
|
if (!Prefix.empty()) {
|
||||||
IntrinsicID = Intrinsic::getIntrinsicForGCCBuiltin(Prefix.data(), Name);
|
IntrinsicID = Intrinsic::getIntrinsicForGCCBuiltin(Prefix.data(), Name);
|
||||||
// NOTE we dont need to perform a compatibility flag check here since the
|
// NOTE we don't need to perform a compatibility flag check here since the
|
||||||
// intrinsics are declared in Builtins*.def via LANGBUILTIN which filter the
|
// intrinsics are declared in Builtins*.def via LANGBUILTIN which filter the
|
||||||
// MS builtins via ALL_MS_LANGUAGES and are filtered earlier.
|
// MS builtins via ALL_MS_LANGUAGES and are filtered earlier.
|
||||||
if (IntrinsicID == Intrinsic::not_intrinsic)
|
if (IntrinsicID == Intrinsic::not_intrinsic)
|
||||||
|
|
|
@ -817,7 +817,7 @@ static SmallString<256> getUniqueTagTypeName(const TagType *Ty,
|
||||||
return FullName;
|
return FullName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \return the approproate DWARF tag for a composite type.
|
/// \return the appropriate DWARF tag for a composite type.
|
||||||
static llvm::dwarf::Tag getTagForRecord(const RecordDecl *RD) {
|
static llvm::dwarf::Tag getTagForRecord(const RecordDecl *RD) {
|
||||||
llvm::dwarf::Tag Tag;
|
llvm::dwarf::Tag Tag;
|
||||||
if (RD->isStruct() || RD->isInterface())
|
if (RD->isStruct() || RD->isInterface())
|
||||||
|
@ -2106,7 +2106,7 @@ CGDebugInfo::getOrCreateModuleRef(ExternalASTSource::ASTSourceDescriptor Mod,
|
||||||
llvm::raw_svector_ostream OS(ConfigMacros);
|
llvm::raw_svector_ostream OS(ConfigMacros);
|
||||||
const auto &PPOpts = CGM.getPreprocessorOpts();
|
const auto &PPOpts = CGM.getPreprocessorOpts();
|
||||||
unsigned I = 0;
|
unsigned I = 0;
|
||||||
// Translate the macro definitions back into a commmand line.
|
// Translate the macro definitions back into a command line.
|
||||||
for (auto &M : PPOpts.Macros) {
|
for (auto &M : PPOpts.Macros) {
|
||||||
if (++I > 1)
|
if (++I > 1)
|
||||||
OS << " ";
|
OS << " ";
|
||||||
|
@ -2871,7 +2871,7 @@ llvm::DICompositeType *CGDebugInfo::CreateLimitedType(const RecordType *Ty) {
|
||||||
case llvm::dwarf::DW_TAG_structure_type:
|
case llvm::dwarf::DW_TAG_structure_type:
|
||||||
case llvm::dwarf::DW_TAG_union_type:
|
case llvm::dwarf::DW_TAG_union_type:
|
||||||
case llvm::dwarf::DW_TAG_class_type:
|
case llvm::dwarf::DW_TAG_class_type:
|
||||||
// Immediatley resolve to a distinct node.
|
// Immediately resolve to a distinct node.
|
||||||
RealDecl =
|
RealDecl =
|
||||||
llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
|
llvm::MDNode::replaceWithDistinct(llvm::TempDICompositeType(RealDecl));
|
||||||
break;
|
break;
|
||||||
|
@ -3587,7 +3587,7 @@ llvm::DILocalVariable *CGDebugInfo::EmitDeclare(const VarDecl *VD,
|
||||||
const RecordDecl *RD = RT->getDecl();
|
const RecordDecl *RD = RT->getDecl();
|
||||||
if (RD->isUnion() && RD->isAnonymousStructOrUnion()) {
|
if (RD->isUnion() && RD->isAnonymousStructOrUnion()) {
|
||||||
// GDB has trouble finding local variables in anonymous unions, so we emit
|
// GDB has trouble finding local variables in anonymous unions, so we emit
|
||||||
// artifical local variables for each of the members.
|
// artificial local variables for each of the members.
|
||||||
//
|
//
|
||||||
// FIXME: Remove this code as soon as GDB supports this.
|
// FIXME: Remove this code as soon as GDB supports this.
|
||||||
// The debug info verifier in LLVM operates based on the assumption that a
|
// The debug info verifier in LLVM operates based on the assumption that a
|
||||||
|
|
|
@ -746,7 +746,7 @@ void AggExprEmitter::VisitCastExpr(CastExpr *E) {
|
||||||
if (isToAtomic) {
|
if (isToAtomic) {
|
||||||
AggValueSlot valueDest = Dest;
|
AggValueSlot valueDest = Dest;
|
||||||
if (!valueDest.isIgnored() && CGF.CGM.isPaddedAtomicType(atomicType)) {
|
if (!valueDest.isIgnored() && CGF.CGM.isPaddedAtomicType(atomicType)) {
|
||||||
// Zero-initialize. (Strictly speaking, we only need to intialize
|
// Zero-initialize. (Strictly speaking, we only need to initialize
|
||||||
// the padding at the end, but this is simpler.)
|
// the padding at the end, but this is simpler.)
|
||||||
if (!Dest.isZeroed())
|
if (!Dest.isZeroed())
|
||||||
CGF.EmitNullInitialization(Dest.getAddress(), atomicType);
|
CGF.EmitNullInitialization(Dest.getAddress(), atomicType);
|
||||||
|
|
|
@ -1056,7 +1056,7 @@ ComplexPairTy ComplexExprEmitter::VisitInitListExpr(InitListExpr *E) {
|
||||||
return Visit(E->getInit(0));
|
return Visit(E->getInit(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty init list intializes to null
|
// Empty init list initializes to null
|
||||||
assert(E->getNumInits() == 0 && "Unexpected number of inits");
|
assert(E->getNumInits() == 0 && "Unexpected number of inits");
|
||||||
QualType Ty = E->getType()->castAs<ComplexType>()->getElementType();
|
QualType Ty = E->getType()->castAs<ComplexType>()->getElementType();
|
||||||
llvm::Type* LTy = CGF.ConvertType(Ty);
|
llvm::Type* LTy = CGF.ConvertType(Ty);
|
||||||
|
|
|
@ -6948,7 +6948,7 @@ llvm::Value *CGObjCNonFragileABIMac::EmitIvarOffset(
|
||||||
|
|
||||||
// This could be 32bit int or 64bit integer depending on the architecture.
|
// This could be 32bit int or 64bit integer depending on the architecture.
|
||||||
// Cast it to 64bit integer value, if it is a 32bit integer ivar offset value
|
// Cast it to 64bit integer value, if it is a 32bit integer ivar offset value
|
||||||
// as this is what caller always expectes.
|
// as this is what caller always expects.
|
||||||
if (ObjCTypes.IvarOffsetVarTy == ObjCTypes.IntTy)
|
if (ObjCTypes.IvarOffsetVarTy == ObjCTypes.IntTy)
|
||||||
IvarOffsetValue = CGF.Builder.CreateIntCast(
|
IvarOffsetValue = CGF.Builder.CreateIntCast(
|
||||||
IvarOffsetValue, ObjCTypes.LongTy, true, "ivar.conv");
|
IvarOffsetValue, ObjCTypes.LongTy, true, "ivar.conv");
|
||||||
|
|
|
@ -64,11 +64,11 @@ public:
|
||||||
|
|
||||||
llvm::PointerType *getSamplerType(const Type *T);
|
llvm::PointerType *getSamplerType(const Type *T);
|
||||||
|
|
||||||
// \brief Returnes a value which indicates the size in bytes of the pipe
|
// \brief Returns a value which indicates the size in bytes of the pipe
|
||||||
// element.
|
// element.
|
||||||
virtual llvm::Value *getPipeElemSize(const Expr *PipeArg);
|
virtual llvm::Value *getPipeElemSize(const Expr *PipeArg);
|
||||||
|
|
||||||
// \brief Returnes a value which indicates the alignment in bytes of the pipe
|
// \brief Returns a value which indicates the alignment in bytes of the pipe
|
||||||
// element.
|
// element.
|
||||||
virtual llvm::Value *getPipeElemAlign(const Expr *PipeArg);
|
virtual llvm::Value *getPipeElemAlign(const Expr *PipeArg);
|
||||||
|
|
||||||
|
|
|
@ -3808,7 +3808,7 @@ void CGOpenMPRuntime::createOffloadEntriesAndInfoMetadata() {
|
||||||
// Right now we only generate metadata for function that contain target
|
// Right now we only generate metadata for function that contain target
|
||||||
// regions.
|
// regions.
|
||||||
|
|
||||||
// If we do not have entries, we dont need to do anything.
|
// If we do not have entries, we don't need to do anything.
|
||||||
if (OffloadEntriesInfoManager.empty())
|
if (OffloadEntriesInfoManager.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -4942,7 +4942,7 @@ void CGOpenMPRuntime::emitTaskCall(CodeGenFunction &CGF, SourceLocation Loc,
|
||||||
CGF.VoidPtrTy);
|
CGF.VoidPtrTy);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: routine and part_id fields are intialized by __kmpc_omp_task_alloc()
|
// NOTE: routine and part_id fields are initialized by __kmpc_omp_task_alloc()
|
||||||
// libcall.
|
// libcall.
|
||||||
// Build kmp_int32 __kmpc_omp_task_with_deps(ident_t *, kmp_int32 gtid,
|
// Build kmp_int32 __kmpc_omp_task_with_deps(ident_t *, kmp_int32 gtid,
|
||||||
// kmp_task_t *new_task, kmp_int32 ndeps, kmp_depend_info_t *dep_list,
|
// kmp_task_t *new_task, kmp_int32 ndeps, kmp_depend_info_t *dep_list,
|
||||||
|
@ -5042,7 +5042,7 @@ void CGOpenMPRuntime::emitTaskLoopCall(CodeGenFunction &CGF, SourceLocation Loc,
|
||||||
return;
|
return;
|
||||||
TaskResultTy Result =
|
TaskResultTy Result =
|
||||||
emitTaskInit(CGF, Loc, D, TaskFunction, SharedsTy, Shareds, Data);
|
emitTaskInit(CGF, Loc, D, TaskFunction, SharedsTy, Shareds, Data);
|
||||||
// NOTE: routine and part_id fields are intialized by __kmpc_omp_task_alloc()
|
// NOTE: routine and part_id fields are initialized by __kmpc_omp_task_alloc()
|
||||||
// libcall.
|
// libcall.
|
||||||
// Call to void __kmpc_taskloop(ident_t *loc, int gtid, kmp_task_t *task, int
|
// Call to void __kmpc_taskloop(ident_t *loc, int gtid, kmp_task_t *task, int
|
||||||
// if_val, kmp_uint64 *lb, kmp_uint64 *ub, kmp_int64 st, int nogroup, int
|
// if_val, kmp_uint64 *lb, kmp_uint64 *ub, kmp_int64 st, int nogroup, int
|
||||||
|
@ -6605,7 +6605,7 @@ public:
|
||||||
bool IsFirstComponentList, bool IsImplicit) const {
|
bool IsFirstComponentList, bool IsImplicit) const {
|
||||||
|
|
||||||
// The following summarizes what has to be generated for each map and the
|
// The following summarizes what has to be generated for each map and the
|
||||||
// types bellow. The generated information is expressed in this order:
|
// types below. The generated information is expressed in this order:
|
||||||
// base pointer, section pointer, size, flags
|
// base pointer, section pointer, size, flags
|
||||||
// (to add to the ones that come from the map type and modifier).
|
// (to add to the ones that come from the map type and modifier).
|
||||||
//
|
//
|
||||||
|
|
|
@ -133,7 +133,7 @@ private:
|
||||||
/// Base declarations for the reduction items.
|
/// Base declarations for the reduction items.
|
||||||
SmallVector<const VarDecl *, 4> BaseDecls;
|
SmallVector<const VarDecl *, 4> BaseDecls;
|
||||||
|
|
||||||
/// Emits lvalue for shared expresion.
|
/// Emits lvalue for shared expression.
|
||||||
LValue emitSharedLValue(CodeGenFunction &CGF, const Expr *E);
|
LValue emitSharedLValue(CodeGenFunction &CGF, const Expr *E);
|
||||||
/// Emits upper bound for shared expression (if array section).
|
/// Emits upper bound for shared expression (if array section).
|
||||||
LValue emitSharedLValueUB(CodeGenFunction &CGF, const Expr *E);
|
LValue emitSharedLValueUB(CodeGenFunction &CGF, const Expr *E);
|
||||||
|
@ -1463,7 +1463,7 @@ public:
|
||||||
|
|
||||||
/// Translates the native parameter of outlined function if this is required
|
/// Translates the native parameter of outlined function if this is required
|
||||||
/// for target.
|
/// for target.
|
||||||
/// \param FD Field decl from captured record for the paramater.
|
/// \param FD Field decl from captured record for the parameter.
|
||||||
/// \param NativeParam Parameter itself.
|
/// \param NativeParam Parameter itself.
|
||||||
virtual const VarDecl *translateParameter(const FieldDecl *FD,
|
virtual const VarDecl *translateParameter(const FieldDecl *FD,
|
||||||
const VarDecl *NativeParam) const {
|
const VarDecl *NativeParam) const {
|
||||||
|
@ -2049,7 +2049,7 @@ public:
|
||||||
|
|
||||||
/// Translates the native parameter of outlined function if this is required
|
/// Translates the native parameter of outlined function if this is required
|
||||||
/// for target.
|
/// for target.
|
||||||
/// \param FD Field decl from captured record for the paramater.
|
/// \param FD Field decl from captured record for the parameter.
|
||||||
/// \param NativeParam Parameter itself.
|
/// \param NativeParam Parameter itself.
|
||||||
const VarDecl *translateParameter(const FieldDecl *FD,
|
const VarDecl *translateParameter(const FieldDecl *FD,
|
||||||
const VarDecl *NativeParam) const override;
|
const VarDecl *NativeParam) const override;
|
||||||
|
|
|
@ -278,7 +278,7 @@ public:
|
||||||
|
|
||||||
/// Translates the native parameter of outlined function if this is required
|
/// Translates the native parameter of outlined function if this is required
|
||||||
/// for target.
|
/// for target.
|
||||||
/// \param FD Field decl from captured record for the paramater.
|
/// \param FD Field decl from captured record for the parameter.
|
||||||
/// \param NativeParam Parameter itself.
|
/// \param NativeParam Parameter itself.
|
||||||
const VarDecl *translateParameter(const FieldDecl *FD,
|
const VarDecl *translateParameter(const FieldDecl *FD,
|
||||||
const VarDecl *NativeParam) const override;
|
const VarDecl *NativeParam) const override;
|
||||||
|
|
|
@ -62,7 +62,7 @@ namespace {
|
||||||
/// because LLVM reads from the complete type it can generate incorrect code
|
/// because LLVM reads from the complete type it can generate incorrect code
|
||||||
/// if we do not clip the tail padding off of the bitfield in the complete
|
/// if we do not clip the tail padding off of the bitfield in the complete
|
||||||
/// layout. This introduces a somewhat awkward extra unnecessary clip stage.
|
/// layout. This introduces a somewhat awkward extra unnecessary clip stage.
|
||||||
/// The location of the clip is stored internally as a sentinal of type
|
/// The location of the clip is stored internally as a sentinel of type
|
||||||
/// SCISSOR. If LLVM were updated to read base types (which it probably
|
/// SCISSOR. If LLVM were updated to read base types (which it probably
|
||||||
/// should because locations of things such as VBases are bogus in the llvm
|
/// should because locations of things such as VBases are bogus in the llvm
|
||||||
/// type anyway) then we could eliminate the SCISSOR.
|
/// type anyway) then we could eliminate the SCISSOR.
|
||||||
|
@ -74,7 +74,7 @@ namespace {
|
||||||
struct CGRecordLowering {
|
struct CGRecordLowering {
|
||||||
// MemberInfo is a helper structure that contains information about a record
|
// MemberInfo is a helper structure that contains information about a record
|
||||||
// member. In additional to the standard member types, there exists a
|
// member. In additional to the standard member types, there exists a
|
||||||
// sentinal member type that ensures correct rounding.
|
// sentinel member type that ensures correct rounding.
|
||||||
struct MemberInfo {
|
struct MemberInfo {
|
||||||
CharUnits Offset;
|
CharUnits Offset;
|
||||||
enum InfoKind { VFPtr, VBPtr, Field, Base, VBase, Scissor } Kind;
|
enum InfoKind { VFPtr, VBPtr, Field, Base, VBase, Scissor } Kind;
|
||||||
|
@ -186,7 +186,7 @@ struct CGRecordLowering {
|
||||||
void clipTailPadding();
|
void clipTailPadding();
|
||||||
/// \brief Determines if we need a packed llvm struct.
|
/// \brief Determines if we need a packed llvm struct.
|
||||||
void determinePacked(bool NVBaseType);
|
void determinePacked(bool NVBaseType);
|
||||||
/// \brief Inserts padding everwhere it's needed.
|
/// \brief Inserts padding everywhere it's needed.
|
||||||
void insertPadding();
|
void insertPadding();
|
||||||
/// \brief Fills out the structures that are ultimately consumed.
|
/// \brief Fills out the structures that are ultimately consumed.
|
||||||
void fillOutputFields();
|
void fillOutputFields();
|
||||||
|
@ -629,7 +629,7 @@ void CGRecordLowering::determinePacked(bool NVBaseType) {
|
||||||
// non-virtual sub-object and an unpacked complete object or vise versa.
|
// non-virtual sub-object and an unpacked complete object or vise versa.
|
||||||
if (NVSize % NVAlignment)
|
if (NVSize % NVAlignment)
|
||||||
Packed = true;
|
Packed = true;
|
||||||
// Update the alignment of the sentinal.
|
// Update the alignment of the sentinel.
|
||||||
if (!Packed)
|
if (!Packed)
|
||||||
Members.back().Data = getIntNType(Context.toBits(Alignment));
|
Members.back().Data = getIntNType(Context.toBits(Alignment));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1037,7 +1037,7 @@ void CodeGenFunction::EmitReturnStmt(const ReturnStmt &S) {
|
||||||
Builder.ClearInsertionPoint();
|
Builder.ClearInsertionPoint();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit the result value, even if unused, to evalute the side effects.
|
// Emit the result value, even if unused, to evaluate the side effects.
|
||||||
const Expr *RV = S.getRetValue();
|
const Expr *RV = S.getRetValue();
|
||||||
|
|
||||||
// Treat block literals in a return expression as if they appeared
|
// Treat block literals in a return expression as if they appeared
|
||||||
|
|
|
@ -4461,7 +4461,7 @@ void CodeGenFunction::EmitOMPUseDevicePtrClause(
|
||||||
EmitDecl(*PvtVD);
|
EmitDecl(*PvtVD);
|
||||||
|
|
||||||
// The initialization variables reached its purpose in the emission
|
// The initialization variables reached its purpose in the emission
|
||||||
// ofthe previous declaration, so we don't need it anymore.
|
// of the previous declaration, so we don't need it anymore.
|
||||||
LocalDeclMap.erase(InitVD);
|
LocalDeclMap.erase(InitVD);
|
||||||
|
|
||||||
// Return the address of the private variable.
|
// Return the address of the private variable.
|
||||||
|
@ -4503,7 +4503,7 @@ void CodeGenFunction::EmitOMPTargetDataDirective(
|
||||||
CGF.EmitStmt(S.getInnermostCapturedStmt()->getCapturedStmt());
|
CGF.EmitStmt(S.getInnermostCapturedStmt()->getCapturedStmt());
|
||||||
};
|
};
|
||||||
|
|
||||||
// Codegen that selects wheather to generate the privatization code or not.
|
// Codegen that selects whether to generate the privatization code or not.
|
||||||
auto &&PrivCodeGen = [&S, &Info, &PrivatizeDevicePointers,
|
auto &&PrivCodeGen = [&S, &Info, &PrivatizeDevicePointers,
|
||||||
&InnermostCodeGen](CodeGenFunction &CGF,
|
&InnermostCodeGen](CodeGenFunction &CGF,
|
||||||
PrePostActionTy &Action) {
|
PrePostActionTy &Action) {
|
||||||
|
|
|
@ -870,7 +870,7 @@ CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {
|
||||||
llvm_unreachable("Invalid TemplateSpecializationKind!");
|
llvm_unreachable("Invalid TemplateSpecializationKind!");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// This is a callback from Sema to tell us that that a particular vtable is
|
/// This is a callback from Sema to tell us that a particular vtable is
|
||||||
/// required to be emitted in this translation unit.
|
/// required to be emitted in this translation unit.
|
||||||
///
|
///
|
||||||
/// This is only called for vtables that _must_ be emitted (mainly due to key
|
/// This is only called for vtables that _must_ be emitted (mainly due to key
|
||||||
|
|
|
@ -1453,7 +1453,7 @@ private:
|
||||||
/// True if we need emit the life-time markers.
|
/// True if we need emit the life-time markers.
|
||||||
const bool ShouldEmitLifetimeMarkers;
|
const bool ShouldEmitLifetimeMarkers;
|
||||||
|
|
||||||
/// Add OpenCL kernel arg metadata and the kernel attribute meatadata to
|
/// Add OpenCL kernel arg metadata and the kernel attribute metadata to
|
||||||
/// the function metadata.
|
/// the function metadata.
|
||||||
void EmitOpenCLKernelMetadata(const FunctionDecl *FD,
|
void EmitOpenCLKernelMetadata(const FunctionDecl *FD,
|
||||||
llvm::Function *Fn);
|
llvm::Function *Fn);
|
||||||
|
@ -1717,7 +1717,7 @@ public:
|
||||||
|
|
||||||
void EmitInitializerForField(FieldDecl *Field, LValue LHS, Expr *Init);
|
void EmitInitializerForField(FieldDecl *Field, LValue LHS, Expr *Init);
|
||||||
|
|
||||||
/// Struct with all informations about dynamic [sub]class needed to set vptr.
|
/// Struct with all information about dynamic [sub]class needed to set vptr.
|
||||||
struct VPtr {
|
struct VPtr {
|
||||||
BaseSubobject Base;
|
BaseSubobject Base;
|
||||||
const CXXRecordDecl *NearestVBase;
|
const CXXRecordDecl *NearestVBase;
|
||||||
|
|
|
@ -2675,7 +2675,7 @@ bool CodeGenModule::isTypeConstant(QualType Ty, bool ExcludeCtor) {
|
||||||
/// If D is non-null, it specifies a decl that correspond to this. This is used
|
/// If D is non-null, it specifies a decl that correspond to this. This is used
|
||||||
/// to set the attributes on the global when it is first created.
|
/// to set the attributes on the global when it is first created.
|
||||||
///
|
///
|
||||||
/// If IsForDefinition is true, it is guranteed that an actual global with
|
/// If IsForDefinition is true, it is guaranteed that an actual global with
|
||||||
/// type Ty will be returned, not conversion of a variable with the same
|
/// type Ty will be returned, not conversion of a variable with the same
|
||||||
/// mangled name but some other type.
|
/// mangled name but some other type.
|
||||||
llvm::Constant *
|
llvm::Constant *
|
||||||
|
@ -2934,7 +2934,7 @@ CodeGenModule::CreateOrReplaceCXXRuntimeVariable(StringRef Name,
|
||||||
/// GetAddrOfGlobalVar - Return the llvm::Constant for the address of the
|
/// GetAddrOfGlobalVar - Return the llvm::Constant for the address of the
|
||||||
/// given global variable. If Ty is non-null and if the global doesn't exist,
|
/// given global variable. If Ty is non-null and if the global doesn't exist,
|
||||||
/// then it will be created with the specified type instead of whatever the
|
/// then it will be created with the specified type instead of whatever the
|
||||||
/// normal requested type would be. If IsForDefinition is true, it is guranteed
|
/// normal requested type would be. If IsForDefinition is true, it is guaranteed
|
||||||
/// that an actual global with type Ty will be returned, not conversion of a
|
/// that an actual global with type Ty will be returned, not conversion of a
|
||||||
/// variable with the same mangled name but some other type.
|
/// variable with the same mangled name but some other type.
|
||||||
llvm::Constant *CodeGenModule::GetAddrOfGlobalVar(const VarDecl *D,
|
llvm::Constant *CodeGenModule::GetAddrOfGlobalVar(const VarDecl *D,
|
||||||
|
@ -3330,7 +3330,7 @@ static bool isVarDeclStrongDefinition(const ASTContext &Context,
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// A variable cannot be both common and exist in a section.
|
// A variable cannot be both common and exist in a section.
|
||||||
// We dont try to determine which is the right section in the front-end.
|
// We don't try to determine which is the right section in the front-end.
|
||||||
// If no specialized section name is applicable, it will resort to default.
|
// If no specialized section name is applicable, it will resort to default.
|
||||||
if (D->hasAttr<PragmaClangBSSSectionAttr>() ||
|
if (D->hasAttr<PragmaClangBSSSectionAttr>() ||
|
||||||
D->hasAttr<PragmaClangDataSectionAttr>() ||
|
D->hasAttr<PragmaClangDataSectionAttr>() ||
|
||||||
|
@ -4188,7 +4188,7 @@ ConstantAddress CodeGenModule::GetAddrOfGlobalTemporary(
|
||||||
if (VD->isStaticDataMember() && VD->getAnyInitializer(InitVD) &&
|
if (VD->isStaticDataMember() && VD->getAnyInitializer(InitVD) &&
|
||||||
isa<CXXRecordDecl>(InitVD->getLexicalDeclContext())) {
|
isa<CXXRecordDecl>(InitVD->getLexicalDeclContext())) {
|
||||||
// Temporaries defined inside a class get linkonce_odr linkage because the
|
// Temporaries defined inside a class get linkonce_odr linkage because the
|
||||||
// class can be defined in multipe translation units.
|
// class can be defined in multiple translation units.
|
||||||
Linkage = llvm::GlobalVariable::LinkOnceODRLinkage;
|
Linkage = llvm::GlobalVariable::LinkOnceODRLinkage;
|
||||||
} else {
|
} else {
|
||||||
// There is no need for this temporary to have external linkage if the
|
// There is no need for this temporary to have external linkage if the
|
||||||
|
|
|
@ -777,7 +777,7 @@ public:
|
||||||
/// Return the llvm::Constant for the address of the given global variable.
|
/// Return the llvm::Constant for the address of the given global variable.
|
||||||
/// If Ty is non-null and if the global doesn't exist, then it will be created
|
/// If Ty is non-null and if the global doesn't exist, then it will be created
|
||||||
/// with the specified type instead of whatever the normal requested type
|
/// with the specified type instead of whatever the normal requested type
|
||||||
/// would be. If IsForDefinition is true, it is guranteed that an actual
|
/// would be. If IsForDefinition is true, it is guaranteed that an actual
|
||||||
/// global with type Ty will be returned, not conversion of a variable with
|
/// global with type Ty will be returned, not conversion of a variable with
|
||||||
/// the same mangled name but some other type.
|
/// the same mangled name but some other type.
|
||||||
llvm::Constant *GetAddrOfGlobalVar(const VarDecl *D,
|
llvm::Constant *GetAddrOfGlobalVar(const VarDecl *D,
|
||||||
|
@ -1178,7 +1178,7 @@ public:
|
||||||
DeferredVTables.push_back(RD);
|
DeferredVTables.push_back(RD);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Emit code for a singal global function or var decl. Forward declarations
|
/// Emit code for a single global function or var decl. Forward declarations
|
||||||
/// are emitted lazily.
|
/// are emitted lazily.
|
||||||
void EmitGlobal(GlobalDecl D);
|
void EmitGlobal(GlobalDecl D);
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ public:
|
||||||
auto Region = CounterMappingRegion::makeSkipped(
|
auto Region = CounterMappingRegion::makeSkipped(
|
||||||
*CovFileID, SR.LineStart, SR.ColumnStart, SR.LineEnd, SR.ColumnEnd);
|
*CovFileID, SR.LineStart, SR.ColumnStart, SR.LineEnd, SR.ColumnEnd);
|
||||||
// Make sure that we only collect the regions that are inside
|
// Make sure that we only collect the regions that are inside
|
||||||
// the souce code of this function.
|
// the source code of this function.
|
||||||
if (Region.LineStart >= FileLineRanges[*CovFileID].first &&
|
if (Region.LineStart >= FileLineRanges[*CovFileID].first &&
|
||||||
Region.LineEnd <= FileLineRanges[*CovFileID].second)
|
Region.LineEnd <= FileLineRanges[*CovFileID].second)
|
||||||
MappingRegions.push_back(Region);
|
MappingRegions.push_back(Region);
|
||||||
|
|
|
@ -1436,7 +1436,7 @@ void ItaniumCXXABI::EmitInstanceFunctionProlog(CodeGenFunction &CGF) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/// Initialize the 'this' slot. In the Itanium C++ ABI, no prologue
|
/// Initialize the 'this' slot. In the Itanium C++ ABI, no prologue
|
||||||
/// adjustments are required, becuase they are all handled by thunks.
|
/// adjustments are required, because they are all handled by thunks.
|
||||||
setCXXABIThisValue(CGF, loadIncomingCXXThis(CGF));
|
setCXXABIThisValue(CGF, loadIncomingCXXThis(CGF));
|
||||||
|
|
||||||
/// Initialize the 'vtt' slot if needed.
|
/// Initialize the 'vtt' slot if needed.
|
||||||
|
|
|
@ -3363,7 +3363,7 @@ CGCXXABI *clang::CodeGen::CreateMicrosoftCXXABI(CodeGenModule &CGM) {
|
||||||
// BaseClassArray: Contains a list of classes in a hierarchy. BaseClassArray is
|
// BaseClassArray: Contains a list of classes in a hierarchy. BaseClassArray is
|
||||||
// somewhat of a misnomer because the most derived class is also in the list
|
// somewhat of a misnomer because the most derived class is also in the list
|
||||||
// as well as multiple copies of virtual bases (if they occur multiple times
|
// as well as multiple copies of virtual bases (if they occur multiple times
|
||||||
// in the hiearchy.) The BaseClassArray contains one BaseClassDescriptor for
|
// in the hierarchy.) The BaseClassArray contains one BaseClassDescriptor for
|
||||||
// every path in the hierarchy, in pre-order depth first order. Note, we do
|
// every path in the hierarchy, in pre-order depth first order. Note, we do
|
||||||
// not declare a specific llvm type for BaseClassArray, it's merely an array
|
// not declare a specific llvm type for BaseClassArray, it's merely an array
|
||||||
// of BaseClassDescriptor pointers.
|
// of BaseClassDescriptor pointers.
|
||||||
|
@ -3911,7 +3911,7 @@ MicrosoftCXXABI::getAddrOfCXXCtorClosure(const CXXConstructorDecl *CD,
|
||||||
SourceLocation(),
|
SourceLocation(),
|
||||||
&getContext().Idents.get("is_most_derived"),
|
&getContext().Idents.get("is_most_derived"),
|
||||||
getContext().IntTy, ImplicitParamDecl::Other);
|
getContext().IntTy, ImplicitParamDecl::Other);
|
||||||
// Only add the parameter to the list if thie class has virtual bases.
|
// Only add the parameter to the list if the class has virtual bases.
|
||||||
if (RD->getNumVBases() > 0)
|
if (RD->getNumVBases() > 0)
|
||||||
FunctionArgs.push_back(&IsMostDerived);
|
FunctionArgs.push_back(&IsMostDerived);
|
||||||
|
|
||||||
|
|
|
@ -266,7 +266,7 @@ public:
|
||||||
virtual llvm::SyncScope::ID getLLVMSyncScopeID(SyncScope S,
|
virtual llvm::SyncScope::ID getLLVMSyncScopeID(SyncScope S,
|
||||||
llvm::LLVMContext &C) const;
|
llvm::LLVMContext &C) const;
|
||||||
|
|
||||||
/// Inteface class for filling custom fields of a block literal for OpenCL.
|
/// Interface class for filling custom fields of a block literal for OpenCL.
|
||||||
class TargetOpenCLBlockHelper {
|
class TargetOpenCLBlockHelper {
|
||||||
public:
|
public:
|
||||||
typedef std::pair<llvm::Value *, StringRef> ValueTy;
|
typedef std::pair<llvm::Value *, StringRef> ValueTy;
|
||||||
|
|
|
@ -95,7 +95,7 @@ bool VarBypassDetector::BuildScopeInformation(const Stmt *S,
|
||||||
case Stmt::CaseStmtClass:
|
case Stmt::CaseStmtClass:
|
||||||
case Stmt::DefaultStmtClass:
|
case Stmt::DefaultStmtClass:
|
||||||
case Stmt::LabelStmtClass:
|
case Stmt::LabelStmtClass:
|
||||||
llvm_unreachable("the loop bellow handles labels and cases");
|
llvm_unreachable("the loop below handles labels and cases");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -396,7 +396,7 @@ static llvm::Triple computeTargetTriple(const Driver &D,
|
||||||
|
|
||||||
// Handle Apple-specific options available here.
|
// Handle Apple-specific options available here.
|
||||||
if (Target.isOSBinFormatMachO()) {
|
if (Target.isOSBinFormatMachO()) {
|
||||||
// If an explict Darwin arch name is given, that trumps all.
|
// If an explicit Darwin arch name is given, that trumps all.
|
||||||
if (!DarwinArchName.empty()) {
|
if (!DarwinArchName.empty()) {
|
||||||
tools::darwin::setTripleTypeForMachOArchName(Target, DarwinArchName);
|
tools::darwin::setTripleTypeForMachOArchName(Target, DarwinArchName);
|
||||||
return Target;
|
return Target;
|
||||||
|
|
|
@ -399,7 +399,7 @@ void arm::getARMTargetFeatures(const ToolChain &TC,
|
||||||
|
|
||||||
// Disable hardware FP features which have been enabled.
|
// Disable hardware FP features which have been enabled.
|
||||||
// FIXME: Disabling vfp2 and neon should be enough as all the other
|
// FIXME: Disabling vfp2 and neon should be enough as all the other
|
||||||
// features are dependant on these 2 features in LLVM. However
|
// features are dependent on these 2 features in LLVM. However
|
||||||
// there is currently no easy way to test this in clang, so for
|
// there is currently no easy way to test this in clang, so for
|
||||||
// now just be explicit and disable all known dependent features
|
// now just be explicit and disable all known dependent features
|
||||||
// as well.
|
// as well.
|
||||||
|
|
|
@ -1693,7 +1693,7 @@ void Clang::AddPPCTargetArgs(const ArgList &Args,
|
||||||
void Clang::AddRISCVTargetArgs(const ArgList &Args,
|
void Clang::AddRISCVTargetArgs(const ArgList &Args,
|
||||||
ArgStringList &CmdArgs) const {
|
ArgStringList &CmdArgs) const {
|
||||||
// FIXME: currently defaults to the soft-float ABIs. Will need to be
|
// FIXME: currently defaults to the soft-float ABIs. Will need to be
|
||||||
// expanded to select ilp32f, ilp32d, lp64f, lp64d when appropiate.
|
// expanded to select ilp32f, ilp32d, lp64f, lp64d when appropriate.
|
||||||
const char *ABIName = nullptr;
|
const char *ABIName = nullptr;
|
||||||
const llvm::Triple &Triple = getToolChain().getTriple();
|
const llvm::Triple &Triple = getToolChain().getTriple();
|
||||||
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
|
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
|
||||||
|
@ -2087,7 +2087,7 @@ static void RenderFloatingPointOptions(const ToolChain &TC, const Driver &D,
|
||||||
// Handle various floating point optimization flags, mapping them to the
|
// Handle various floating point optimization flags, mapping them to the
|
||||||
// appropriate LLVM code generation flags. This is complicated by several
|
// appropriate LLVM code generation flags. This is complicated by several
|
||||||
// "umbrella" flags, so we do this by stepping through the flags incrementally
|
// "umbrella" flags, so we do this by stepping through the flags incrementally
|
||||||
// adjusting what we think is enabled/disabled, then at the end settting the
|
// adjusting what we think is enabled/disabled, then at the end setting the
|
||||||
// LLVM flags based on the final state.
|
// LLVM flags based on the final state.
|
||||||
bool HonorINFs = true;
|
bool HonorINFs = true;
|
||||||
bool HonorNaNs = true;
|
bool HonorNaNs = true;
|
||||||
|
@ -4247,7 +4247,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
||||||
!IsWindowsMSVC || IsMSVC2015Compatible))
|
!IsWindowsMSVC || IsMSVC2015Compatible))
|
||||||
CmdArgs.push_back("-fno-threadsafe-statics");
|
CmdArgs.push_back("-fno-threadsafe-statics");
|
||||||
|
|
||||||
// -fno-delayed-template-parsing is default, except when targetting MSVC.
|
// -fno-delayed-template-parsing is default, except when targeting MSVC.
|
||||||
// Many old Windows SDK versions require this to parse.
|
// Many old Windows SDK versions require this to parse.
|
||||||
// FIXME: MSVC introduced /Zc:twoPhase- to disable this behavior in their
|
// FIXME: MSVC introduced /Zc:twoPhase- to disable this behavior in their
|
||||||
// compiler. We should be able to disable this by default at some point.
|
// compiler. We should be able to disable this by default at some point.
|
||||||
|
|
|
@ -1001,7 +1001,7 @@ tools::ParsePICArgs(const ToolChain &ToolChain, const ArgList &Args) {
|
||||||
RWPI = true;
|
RWPI = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ROPI and RWPI are not comaptible with PIC or PIE.
|
// ROPI and RWPI are not compatible with PIC or PIE.
|
||||||
if ((ROPI || RWPI) && (PIC || PIE))
|
if ((ROPI || RWPI) && (PIC || PIE))
|
||||||
ToolChain.getDriver().Diag(diag::err_drv_ropi_rwpi_incompatible_with_pic);
|
ToolChain.getDriver().Diag(diag::err_drv_ropi_rwpi_incompatible_with_pic);
|
||||||
|
|
||||||
|
|
|
@ -184,7 +184,7 @@ CudaInstallationDetector::CudaInstallationDetector(
|
||||||
StringRef GpuArch = FileName.slice(
|
StringRef GpuArch = FileName.slice(
|
||||||
LibDeviceName.size(), FileName.find('.', LibDeviceName.size()));
|
LibDeviceName.size(), FileName.find('.', LibDeviceName.size()));
|
||||||
LibDeviceMap[GpuArch] = FilePath.str();
|
LibDeviceMap[GpuArch] = FilePath.str();
|
||||||
// Insert map entries for specifc devices with this compute
|
// Insert map entries for specific devices with this compute
|
||||||
// capability. NVCC's choice of the libdevice library version is
|
// capability. NVCC's choice of the libdevice library version is
|
||||||
// rather peculiar and depends on the CUDA version.
|
// rather peculiar and depends on the CUDA version.
|
||||||
if (GpuArch == "compute_20") {
|
if (GpuArch == "compute_20") {
|
||||||
|
|
|
@ -141,7 +141,7 @@ private:
|
||||||
// token.
|
// token.
|
||||||
//
|
//
|
||||||
// NextTok specifies the next token. A null pointer NextTok is supported, and
|
// NextTok specifies the next token. A null pointer NextTok is supported, and
|
||||||
// signifies either the absense of a next token, or that the next token
|
// signifies either the absence of a next token, or that the next token
|
||||||
// shouldn't be taken into accunt for the analysis.
|
// shouldn't be taken into accunt for the analysis.
|
||||||
void distributeComments(const SmallVectorImpl<FormatToken *> &Comments,
|
void distributeComments(const SmallVectorImpl<FormatToken *> &Comments,
|
||||||
const FormatToken *NextTok);
|
const FormatToken *NextTok);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
//===-- ASTMerge.cpp - AST Merging Frontent Action --------------*- C++ -*-===//
|
//===-- ASTMerge.cpp - AST Merging Frontend Action --------------*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
|
|
|
@ -1300,7 +1300,7 @@ static bool compileAndLoadModule(CompilerInstance &ImportingInstance,
|
||||||
// case of timeout, build it ourselves.
|
// case of timeout, build it ourselves.
|
||||||
Diags.Report(ModuleNameLoc, diag::remark_module_lock_timeout)
|
Diags.Report(ModuleNameLoc, diag::remark_module_lock_timeout)
|
||||||
<< Module->Name;
|
<< Module->Name;
|
||||||
// Clear the lock file so that future invokations can make progress.
|
// Clear the lock file so that future invocations can make progress.
|
||||||
Locked.unsafeRemoveLockFile();
|
Locked.unsafeRemoveLockFile();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -186,7 +186,7 @@ void DiagnosticRenderer::emitIncludeStack(FullSourceLoc Loc, PresumedLoc PLoc,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Helper to recursivly walk up the include stack and print each layer
|
/// \brief Helper to recursively walk up the include stack and print each layer
|
||||||
/// on the way back down.
|
/// on the way back down.
|
||||||
void DiagnosticRenderer::emitIncludeStackRecursively(FullSourceLoc Loc) {
|
void DiagnosticRenderer::emitIncludeStackRecursively(FullSourceLoc Loc) {
|
||||||
if (Loc.isInvalid()) {
|
if (Loc.isInvalid()) {
|
||||||
|
@ -227,7 +227,7 @@ void DiagnosticRenderer::emitImportStack(FullSourceLoc Loc) {
|
||||||
emitImportStackRecursively(NextImportLoc.first, NextImportLoc.second);
|
emitImportStackRecursively(NextImportLoc.first, NextImportLoc.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Helper to recursivly walk up the import stack and print each layer
|
/// \brief Helper to recursively walk up the import stack and print each layer
|
||||||
/// on the way back down.
|
/// on the way back down.
|
||||||
void DiagnosticRenderer::emitImportStackRecursively(FullSourceLoc Loc,
|
void DiagnosticRenderer::emitImportStackRecursively(FullSourceLoc Loc,
|
||||||
StringRef ModuleName) {
|
StringRef ModuleName) {
|
||||||
|
@ -448,7 +448,7 @@ static bool checkLocForMacroArgExpansion(SourceLocation Loc,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if all the locations in the range have the same macro argument
|
/// Check if all the locations in the range have the same macro argument
|
||||||
/// expansion, and that that expansion starts with ArgumentLoc.
|
/// expansion, and that the expansion starts with ArgumentLoc.
|
||||||
static bool checkRangeForMacroArgExpansion(CharSourceRange Range,
|
static bool checkRangeForMacroArgExpansion(CharSourceRange Range,
|
||||||
const SourceManager &SM,
|
const SourceManager &SM,
|
||||||
SourceLocation ArgumentLoc) {
|
SourceLocation ArgumentLoc) {
|
||||||
|
|
|
@ -135,7 +135,7 @@ static bool isCaseSensitivePath(StringRef Path) {
|
||||||
|
|
||||||
// Change path to all upper case and ask for its real path, if the latter
|
// Change path to all upper case and ask for its real path, if the latter
|
||||||
// exists and is equal to Path, it's not case sensitive. Default to case
|
// exists and is equal to Path, it's not case sensitive. Default to case
|
||||||
// sensitive in the absense of realpath, since this is what the VFSWriter
|
// sensitive in the absence of realpath, since this is what the VFSWriter
|
||||||
// already expects when sensitivity isn't setup.
|
// already expects when sensitivity isn't setup.
|
||||||
for (auto &C : Path)
|
for (auto &C : Path)
|
||||||
UpperDest.push_back(toUppercase(C));
|
UpperDest.push_back(toUppercase(C));
|
||||||
|
|
|
@ -6747,9 +6747,9 @@ static void Write_IvarOffsetVar(RewriteModernObjC &RewriteObj,
|
||||||
if (Ivar->getAccessControl() == ObjCIvarDecl::Private ||
|
if (Ivar->getAccessControl() == ObjCIvarDecl::Private ||
|
||||||
Ivar->getAccessControl() == ObjCIvarDecl::Package ||
|
Ivar->getAccessControl() == ObjCIvarDecl::Package ||
|
||||||
Class->getVisibility() == HiddenVisibility)
|
Class->getVisibility() == HiddenVisibility)
|
||||||
Visibility shoud be: HiddenVisibility;
|
Visibility should be: HiddenVisibility;
|
||||||
else
|
else
|
||||||
Visibility shoud be: DefaultVisibility;
|
Visibility should be: DefaultVisibility;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Result += "\n";
|
Result += "\n";
|
||||||
|
|
|
@ -462,7 +462,7 @@ void SDiagsWriter::EmitBlockInfoBlock() {
|
||||||
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Diagnostc text.
|
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Diagnostc text.
|
||||||
Abbrevs.set(RECORD_DIAG, Stream.EmitBlockInfoAbbrev(BLOCK_DIAG, Abbrev));
|
Abbrevs.set(RECORD_DIAG, Stream.EmitBlockInfoAbbrev(BLOCK_DIAG, Abbrev));
|
||||||
|
|
||||||
// Emit abbrevation for RECORD_CATEGORY.
|
// Emit abbreviation for RECORD_CATEGORY.
|
||||||
Abbrev = std::make_shared<BitCodeAbbrev>();
|
Abbrev = std::make_shared<BitCodeAbbrev>();
|
||||||
Abbrev->Add(BitCodeAbbrevOp(RECORD_CATEGORY));
|
Abbrev->Add(BitCodeAbbrevOp(RECORD_CATEGORY));
|
||||||
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Category ID.
|
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Category ID.
|
||||||
|
@ -470,7 +470,7 @@ void SDiagsWriter::EmitBlockInfoBlock() {
|
||||||
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Category text.
|
Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Category text.
|
||||||
Abbrevs.set(RECORD_CATEGORY, Stream.EmitBlockInfoAbbrev(BLOCK_DIAG, Abbrev));
|
Abbrevs.set(RECORD_CATEGORY, Stream.EmitBlockInfoAbbrev(BLOCK_DIAG, Abbrev));
|
||||||
|
|
||||||
// Emit abbrevation for RECORD_SOURCE_RANGE.
|
// Emit abbreviation for RECORD_SOURCE_RANGE.
|
||||||
Abbrev = std::make_shared<BitCodeAbbrev>();
|
Abbrev = std::make_shared<BitCodeAbbrev>();
|
||||||
Abbrev->Add(BitCodeAbbrevOp(RECORD_SOURCE_RANGE));
|
Abbrev->Add(BitCodeAbbrevOp(RECORD_SOURCE_RANGE));
|
||||||
AddRangeLocationAbbrev(*Abbrev);
|
AddRangeLocationAbbrev(*Abbrev);
|
||||||
|
|
|
@ -54,7 +54,7 @@ struct dim3;
|
||||||
#define __DELETE
|
#define __DELETE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Make sure nobody can create instances of the special varible types. nvcc
|
// Make sure nobody can create instances of the special variable types. nvcc
|
||||||
// also disallows taking address of special variables, so we disable address-of
|
// also disallows taking address of special variables, so we disable address-of
|
||||||
// operator as well.
|
// operator as well.
|
||||||
#define __CUDA_DISALLOW_BUILTINVAR_ACCESS(TypeName) \
|
#define __CUDA_DISALLOW_BUILTINVAR_ACCESS(TypeName) \
|
||||||
|
|
|
@ -125,7 +125,7 @@ _mm_aesimc_si128(__m128i __V)
|
||||||
return (__m128i)__builtin_ia32_aesimc128((__v2di)__V);
|
return (__m128i)__builtin_ia32_aesimc128((__v2di)__V);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Generates a round key for AES encyption, operating on 128-bit data
|
/// \brief Generates a round key for AES encryption, operating on 128-bit data
|
||||||
/// specified in the first source operand and using an 8-bit round constant
|
/// specified in the first source operand and using an 8-bit round constant
|
||||||
/// specified by the second source operand, and writes the result to the
|
/// specified by the second source operand, and writes the result to the
|
||||||
/// destination.
|
/// destination.
|
||||||
|
|
|
@ -214,7 +214,7 @@ __TM_failure_code(void* const __TM_buff)
|
||||||
|
|
||||||
/* These intrinsics are being made available for compatibility with
|
/* These intrinsics are being made available for compatibility with
|
||||||
the IBM XL compiler. For documentation please see the "z/OS XL
|
the IBM XL compiler. For documentation please see the "z/OS XL
|
||||||
C/C++ Programming Guide" publically available on the web. */
|
C/C++ Programming Guide" publicly available on the web. */
|
||||||
|
|
||||||
static __inline long __attribute__((__always_inline__, __nodebug__))
|
static __inline long __attribute__((__always_inline__, __nodebug__))
|
||||||
__TM_simple_begin ()
|
__TM_simple_begin ()
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
*
|
*
|
||||||
* To accommodate targets that are missing types that are exactly 8, 16, 32, or
|
* To accommodate targets that are missing types that are exactly 8, 16, 32, or
|
||||||
* 64 bits wide, this implementation takes an approach of cascading
|
* 64 bits wide, this implementation takes an approach of cascading
|
||||||
* redefintions, redefining __int_leastN_t to successively smaller exact-width
|
* redefinitions, redefining __int_leastN_t to successively smaller exact-width
|
||||||
* types. It is therefore important that the types are defined in order of
|
* types. It is therefore important that the types are defined in order of
|
||||||
* descending widths.
|
* descending widths.
|
||||||
*
|
*
|
||||||
|
@ -461,7 +461,7 @@ typedef __UINTMAX_TYPE__ uintmax_t;
|
||||||
* As in the type definitions, this section takes an approach of
|
* As in the type definitions, this section takes an approach of
|
||||||
* successive-shrinking to determine which limits to use for the standard (8,
|
* successive-shrinking to determine which limits to use for the standard (8,
|
||||||
* 16, 32, 64) bit widths when they don't have exact representations. It is
|
* 16, 32, 64) bit widths when they don't have exact representations. It is
|
||||||
* therefore important that the defintions be kept in order of decending
|
* therefore important that the definitions be kept in order of decending
|
||||||
* widths.
|
* widths.
|
||||||
*
|
*
|
||||||
* Note that C++ should not check __STDC_LIMIT_MACROS here, contrary to the
|
* Note that C++ should not check __STDC_LIMIT_MACROS here, contrary to the
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue