diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -504,13 +504,6 @@ "Build clang with plugin support" ON "HAVE_CLANG_PLUGIN_SUPPORT" OFF) -# If libstdc++ is statically linked, clang-repl needs to statically link libstdc++ -# itself, which is not possible in many platforms because of current limitations in -# JIT stack. (more platforms need to be supported by JITLink) -if(NOT LLVM_STATIC_LINK_CXX_STDLIB) - set(HAVE_CLANG_REPL_SUPPORT ON) -endif() - option(CLANG_ENABLE_ARCMT "Build ARCMT." ON) option(CLANG_ENABLE_STATIC_ANALYZER "Include static analyzer in clang binary." ON) diff --git a/clang/bindings/python/clang/cindex.py b/clang/bindings/python/clang/cindex.py --- a/clang/bindings/python/clang/cindex.py +++ b/clang/bindings/python/clang/cindex.py @@ -1152,7 +1152,7 @@ # Objective-C's @synchronized statement. CursorKind.OBJC_AT_SYNCHRONIZED_STMT = CursorKind(220) -# Objective-C's autorealease pool statement. +# Objective-C's autorelease pool statement. CursorKind.OBJC_AUTORELEASE_POOL_STMT = CursorKind(221) # Objective-C's for collection statement. diff --git a/clang/cmake/caches/MultiDistributionExample.cmake b/clang/cmake/caches/MultiDistributionExample.cmake --- a/clang/cmake/caches/MultiDistributionExample.cmake +++ b/clang/cmake/caches/MultiDistributionExample.cmake @@ -1,5 +1,5 @@ # This file sets up a CMakeCache for a simple build with multiple distributions. -# Note that for a real distribution, you likely want to perform a boostrap +# Note that for a real distribution, you likely want to perform a bootstrap # build; see clang/cmake/caches/DistributionExample.cmake and the # BuildingADistribution documentation for details. This cache file doesn't # demonstrate bootstrapping so it can focus on the configuration details diff --git a/clang/docs/ClangFormat.rst b/clang/docs/ClangFormat.rst --- a/clang/docs/ClangFormat.rst +++ b/clang/docs/ClangFormat.rst @@ -317,7 +317,7 @@ -v, --verbose be more verbose, ineffective without -i -style STYLE formatting style to apply (LLVM, GNU, Google, Chromium, Microsoft, Mozilla, WebKit) -fallback-style FALLBACK_STYLE - The name of the predefined style used as afallback in case clang-format is invoked with-style=file, but can not + The name of the predefined style used as a fallback in case clang-format is invoked with-style=file, but can not find the .clang-formatfile to use. -binary BINARY location of binary to use for clang-format diff --git a/clang/docs/JSONCompilationDatabase.rst b/clang/docs/JSONCompilationDatabase.rst --- a/clang/docs/JSONCompilationDatabase.rst +++ b/clang/docs/JSONCompilationDatabase.rst @@ -29,7 +29,7 @@ Supported Systems ================= -Clang has the ablity to generate compilation database fragments via +Clang has the ability to generate compilation database fragments via the :option:`-MJ argument >`. You can concatenate those fragments together between ``[`` and ``]`` to create a compilation database. diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst --- a/clang/docs/LanguageExtensions.rst +++ b/clang/docs/LanguageExtensions.rst @@ -3006,7 +3006,7 @@ Once this builtin is evaluated in a constexpr context, it is erroneous to use it in an instantiation which changes its value. -In order to produce the unique name, the current implementation of the bultin +In order to produce the unique name, the current implementation of the builtin uses Itanium mangling even if the host compilation uses a different name mangling scheme at runtime. The mangler marks all the lambdas required to name the SYCL kernel and emits a stable local ordering of the respective lambdas. diff --git a/clang/docs/analyzer/user-docs/CrossTranslationUnit.rst b/clang/docs/analyzer/user-docs/CrossTranslationUnit.rst --- a/clang/docs/analyzer/user-docs/CrossTranslationUnit.rst +++ b/clang/docs/analyzer/user-docs/CrossTranslationUnit.rst @@ -210,7 +210,7 @@ The compiler invocation is a shell command that could be used to compile the TU-s main source file. The mapping from absolute source file paths of a TU to lists of compilation command segments used to compile said TU are given in YAML format referred to as `invocation list`, and must be passed as an -analyer-config argument. +analyzer-config argument. The index, which maps function USR names to source files containing them must also be generated by the `clang-extdef-mapping`. Entries in the index must *not* have an `.ast` suffix if the goal is to use On-demand analysis, as that extension signals that the entry is to be used as an PCH-dump. diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h --- a/clang/include/clang/AST/DeclCXX.h +++ b/clang/include/clang/AST/DeclCXX.h @@ -1916,7 +1916,7 @@ ExplicitSpecifier getExplicitSpecifier() { return ExplicitSpec; } const ExplicitSpecifier getExplicitSpecifier() const { return ExplicitSpec; } - /// Return true if the declartion is already resolved to be explicit. + /// Return true if the declaration is already resolved to be explicit. bool isExplicit() const { return ExplicitSpec.isExplicit(); } /// Get the template for which this guide performs deduction. @@ -2512,7 +2512,7 @@ return getCanonicalDecl()->getExplicitSpecifierInternal(); } - /// Return true if the declartion is already resolved to be explicit. + /// Return true if the declaration is already resolved to be explicit. bool isExplicit() const { return getExplicitSpecifier().isExplicit(); } /// Iterates through the member/base initializer list. @@ -2796,7 +2796,7 @@ return getCanonicalDecl()->ExplicitSpec; } - /// Return true if the declartion is already resolved to be explicit. + /// Return true if the declaration is already resolved to be explicit. bool isExplicit() const { return getExplicitSpecifier().isExplicit(); } void setExplicitSpecifier(ExplicitSpecifier ES) { ExplicitSpec = ES; } diff --git a/clang/include/clang/AST/OpenMPClause.h b/clang/include/clang/AST/OpenMPClause.h --- a/clang/include/clang/AST/OpenMPClause.h +++ b/clang/include/clang/AST/OpenMPClause.h @@ -8391,14 +8391,14 @@ /// \param StartLoc Starting location of the clause. /// \param LParenLoc Location of '('. /// \param EndLoc Ending location of the clause. - /// \param N Number of allocators asssociated with the clause. + /// \param N Number of allocators associated with the clause. OMPUsesAllocatorsClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation EndLoc, unsigned N) : OMPClause(llvm::omp::OMPC_uses_allocators, StartLoc, EndLoc), LParenLoc(LParenLoc), NumOfAllocators(N) {} /// Build an empty clause. - /// \param N Number of allocators asssociated with the clause. + /// \param N Number of allocators associated with the clause. /// explicit OMPUsesAllocatorsClause(unsigned N) : OMPClause(llvm::omp::OMPC_uses_allocators, SourceLocation(), @@ -8492,14 +8492,14 @@ /// \param LParenLoc Location of '('. /// \param ColonLoc Location of ':'. /// \param EndLoc Ending location of the clause. - /// \param N Number of locators asssociated with the clause. + /// \param N Number of locators associated with the clause. OMPAffinityClause(SourceLocation StartLoc, SourceLocation LParenLoc, SourceLocation ColonLoc, SourceLocation EndLoc, unsigned N) : OMPVarListClause(llvm::omp::OMPC_affinity, StartLoc, LParenLoc, EndLoc, N) {} /// Build an empty clause. - /// \param N Number of locators asssociated with the clause. + /// \param N Number of locators associated with the clause. /// explicit OMPAffinityClause(unsigned N) : OMPVarListClause(llvm::omp::OMPC_affinity, diff --git a/clang/include/clang/Analysis/ConstructionContext.h b/clang/include/clang/Analysis/ConstructionContext.h --- a/clang/include/clang/Analysis/ConstructionContext.h +++ b/clang/include/clang/Analysis/ConstructionContext.h @@ -542,7 +542,7 @@ /// of being immediately copied by an elidable copy/move constructor. /// For example, T t = T(123); includes a temporary T(123) that is immediately /// copied to variable t. In such cases the elidable copy can (but not -/// necessarily should) be omitted ("elided") accodring to the rules of the +/// necessarily should) be omitted ("elided") according to the rules of the /// language; the constructor would then construct variable t directly. /// This construction context contains information of the elidable constructor /// and its respective construction context. diff --git a/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h b/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h --- a/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h +++ b/clang/include/clang/Analysis/FlowSensitive/DataflowValues.h @@ -134,7 +134,7 @@ /// getBlockDataMap - Retrieves the internal map between CFGBlocks and /// dataflow values. If the dataflow analysis operates in the forward /// direction, the values correspond to the dataflow values at the start - /// of the block. Otherwise, for a backward analysis, the values correpsond + /// of the block. Otherwise, for a backward analysis, the values correspond /// to the dataflow values at the end of the block. BlockDataMapTy& getBlockDataMap() { return BlockDataMap; } const BlockDataMapTy& getBlockDataMap() const { return BlockDataMap; } diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td --- a/clang/include/clang/Basic/AttrDocs.td +++ b/clang/include/clang/Basic/AttrDocs.td @@ -4389,7 +4389,7 @@ applied to a definition. If ``allow_templates`` is given, template function definitions are considered as specializations of existing or assumed template declarations with the same name. The template parameters for the base functions -are used to instantiate the specialization. If ``bind_to_declartion`` is given, +are used to instantiate the specialization. If ``bind_to_declaration`` is given, apply the same variant rules to function declarations. This allows the user to override declarations with only a function declaration. }]; @@ -6106,7 +6106,7 @@ does_not_exist x; // error: use of unresolved 'using_if_exists' -The C++ spelling of the attribte (`[[clang::using_if_exists]]`) is also +The C++ spelling of the attribute (`[[clang::using_if_exists]]`) is also supported as a clang extension, since ISO C++ doesn't support attributes in this position. If the entity referred to by the using-declaration is found by name lookup, the attribute has no effect. This attribute is useful for libraries @@ -6444,7 +6444,7 @@ command-line arguments. - ``used`` only zeros call-used registers used in the function. By ``used``, we mean a register whose contents have been set or referenced in the function. -- ``used-gpr`` only zeros call-used GPR registers used in the funciton. +- ``used-gpr`` only zeros call-used GPR registers used in the function. - ``used-arg`` only zeros call-used registers used to pass arguments to the function. - ``used-gpr-arg`` only zeros call-used GPR registers used to pass arguments to @@ -6456,7 +6456,7 @@ - ``all-gpr-arg`` zeros all call-used GPR registers used to pass arguments to the function. -The default for the attribute is contolled by the ``-fzero-call-used-regs`` +The default for the attribute is controlled by the ``-fzero-call-used-regs`` flag. .. _Return-Oriented Programming: https://en.wikipedia.org/wiki/Return-oriented_programming diff --git a/clang/include/clang/Basic/BuiltinsVE.def b/clang/include/clang/Basic/BuiltinsVE.def --- a/clang/include/clang/Basic/BuiltinsVE.def +++ b/clang/include/clang/Basic/BuiltinsVE.def @@ -15,7 +15,7 @@ # define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) #endif -// The format of this database is decribed in clang/Basic/Builtins.def. +// The format of this database is described in clang/Basic/Builtins.def. BUILTIN(__builtin_ve_vl_pack_f32p, "ULifC*fC*", "n") BUILTIN(__builtin_ve_vl_pack_f32a, "ULifC*", "n") diff --git a/clang/include/clang/Basic/JsonSupport.h b/clang/include/clang/Basic/JsonSupport.h --- a/clang/include/clang/Basic/JsonSupport.h +++ b/clang/include/clang/Basic/JsonSupport.h @@ -104,7 +104,9 @@ auto RemoveIt = std::remove_if(filename.begin(), filename.end(), [](auto Char) { static const char ForbiddenChars[] = "<>*?\"|"; - return llvm::is_contained(ForbiddenChars, Char); + return std::find(std::begin(ForbiddenChars), + std::end(ForbiddenChars), + Char) != std::end(ForbiddenChars); }); filename.erase(RemoveIt, filename.end()); // Handle windows-specific path delimiters. diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -1918,11 +1918,11 @@ } }; -/// SourceManager and necessary depdencies (e.g. VFS, FileManager) for a single -/// in-memorty file. +/// SourceManager and necessary dependencies (e.g. VFS, FileManager) for a +/// single in-memorty file. class SourceManagerForFile { public: - /// Creates SourceManager and necessary depdencies (e.g. VFS, FileManager). + /// Creates SourceManager and necessary dependencies (e.g. VFS, FileManager). /// The main file in the SourceManager will be \p FileName with \p Content. SourceManagerForFile(StringRef FileName, StringRef Content); diff --git a/clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h b/clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h --- a/clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h +++ b/clang/include/clang/ExtractAPI/Serialization/SymbolGraphSerializer.h @@ -153,7 +153,7 @@ /// Serialize an Objective-C container record. void serializeObjCContainerRecord(const ObjCContainerRecord &Record); - /// Serialize a macro defintion record. + /// Serialize a macro definition record. void serializeMacroDefinitionRecord(const MacroDefinitionRecord &Record); /// Serialize a typedef record. diff --git a/clang/include/clang/Lex/DependencyDirectivesScanner.h b/clang/include/clang/Lex/DependencyDirectivesScanner.h --- a/clang/include/clang/Lex/DependencyDirectivesScanner.h +++ b/clang/include/clang/Lex/DependencyDirectivesScanner.h @@ -87,7 +87,7 @@ /// Represents a directive that's lexed as part of the dependency directives /// scanning. It's used to track various preprocessor directives that could -/// potentially have an effect on the depedencies. +/// potentially have an effect on the dependencies. struct Directive { ArrayRef Tokens; diff --git a/clang/include/clang/Sema/DeclSpec.h b/clang/include/clang/Sema/DeclSpec.h --- a/clang/include/clang/Sema/DeclSpec.h +++ b/clang/include/clang/Sema/DeclSpec.h @@ -1343,7 +1343,7 @@ /// DeclSpec for the function with the qualifier related info. DeclSpec *MethodQualifiers; - /// AtttibuteFactory for the MethodQualifiers. + /// AttributeFactory for the MethodQualifiers. AttributeFactory *QualAttrFactory; union { diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h --- a/clang/include/clang/Sema/Sema.h +++ b/clang/include/clang/Sema/Sema.h @@ -306,7 +306,7 @@ /// Computing a type for the function argument may require running /// overloading, so we postpone its computation until it is actually needed. /// - /// Clients should be very careful when using this funciton, as it stores a + /// Clients should be very careful when using this function, as it stores a /// function_ref, clients should make sure all calls to get() with the same /// location happen while function_ref is alive. /// @@ -4018,13 +4018,10 @@ DeclAccessPair *Found = nullptr); bool ResolveAndFixSingleFunctionTemplateSpecialization( - ExprResult &SrcExpr, - bool DoFunctionPointerConverion = false, - bool Complain = false, - SourceRange OpRangeForComplaining = SourceRange(), - QualType DestTypeForComplaining = QualType(), - unsigned DiagIDForComplaining = 0); - + ExprResult &SrcExpr, bool DoFunctionPointerConversion = false, + bool Complain = false, SourceRange OpRangeForComplaining = SourceRange(), + QualType DestTypeForComplaining = QualType(), + unsigned DiagIDForComplaining = 0); Expr *FixOverloadedFunctionReference(Expr *E, DeclAccessPair FoundDecl, diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/include/clang/Serialization/ASTReader.h @@ -381,7 +381,7 @@ /// The AST file was written by a different version of Clang. VersionMismatch, - /// The AST file was writtten with a different language/target + /// The AST file was written with a different language/target /// configuration. ConfigurationMismatch, diff --git a/clang/include/clang/Serialization/SourceLocationEncoding.h b/clang/include/clang/Serialization/SourceLocationEncoding.h --- a/clang/include/clang/Serialization/SourceLocationEncoding.h +++ b/clang/include/clang/Serialization/SourceLocationEncoding.h @@ -10,7 +10,7 @@ // the size of typical serialized files. Storing them efficiently is important. // // We use integers optimized by VBR-encoding, because: -// - when abbrevations cannot be used, VBR6 encoding is our only choice +// - when abbreviations cannot be used, VBR6 encoding is our only choice // - in the worst case a SourceLocation can be ~any 32-bit number, but in // practice they are highly predictable // diff --git a/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h b/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h --- a/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h +++ b/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h @@ -153,7 +153,7 @@ /// Constructs a CheckerManager without requiring an AST. No checker /// registration will take place. Only useful when one needs to print the - /// help flags through CheckerRegistryData, and the AST is unavalaible. + /// help flags through CheckerRegistryData, and the AST is unavailable. CheckerManager(AnalyzerOptions &AOptions, const LangOptions &LangOpts, DiagnosticsEngine &Diags, ArrayRef plugins); diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h --- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h +++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h @@ -720,11 +720,11 @@ /// returned, which is better than nothing but does not represent /// the actual behavior of the program. The Idx parameter is used if we /// construct an array of objects. In that case it points to the index - /// of the continous memory region. + /// of the continuous memory region. /// E.g.: /// For `int arr[4]` this index can be 0,1,2,3. /// For `int arr2[3][3]` this index can be 0,1,...,7,8. - /// A multi-dimensional array is also a continous memory location in a + /// A multi-dimensional array is also a continuous memory location in a /// row major order, so for arr[0][0] Idx is 0 and for arr[2][2] Idx is 8. SVal computeObjectUnderConstruction(const Expr *E, ProgramStateRef State, const LocationContext *LCtx, diff --git a/clang/include/clang/Tooling/Core/Replacement.h b/clang/include/clang/Tooling/Core/Replacement.h --- a/clang/include/clang/Tooling/Core/Replacement.h +++ b/clang/include/clang/Tooling/Core/Replacement.h @@ -301,7 +301,7 @@ // applied. Replacements getCanonicalReplacements() const; - // If `R` and all existing replacements are order-indepedent, then merge it + // If `R` and all existing replacements are order-independent, then merge it // with `Replaces` and returns the merged replacements; otherwise, returns an // error. llvm::Expected diff --git a/clang/include/clang/Tooling/Syntax/Tree.h b/clang/include/clang/Tooling/Syntax/Tree.h --- a/clang/include/clang/Tooling/Syntax/Tree.h +++ b/clang/include/clang/Tooling/Syntax/Tree.h @@ -10,7 +10,7 @@ // - tree nodes correspond to language grammar constructs. // // The tree is initially built from an AST. Each node of a newly built tree -// covers a continous subrange of expanded tokens (i.e. tokens after +// covers a continuous subrange of expanded tokens (i.e. tokens after // preprocessing), the specific tokens coverered are stored in the leaf nodes of // a tree. A post-order traversal of a tree will visit leaf nodes in an order // corresponding the original order of expanded tokens. diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -2485,7 +2485,7 @@ } /// getTypeUnadjustedAlignInChars - Return the ABI-specified alignment of a -/// type, in characters, before alignment adustments. This method does +/// type, in characters, before alignment adjustments. This method does /// not work on incomplete types. CharUnits ASTContext::getTypeUnadjustedAlignInChars(QualType T) const { return toCharUnitsFromBits(getTypeUnadjustedAlign(T)); diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp --- a/clang/lib/Analysis/CFG.cpp +++ b/clang/lib/Analysis/CFG.cpp @@ -1617,7 +1617,7 @@ } /// createBlock - Used to lazily create blocks that are connected -/// to the current (global) succcessor. +/// to the current (global) successor. CFGBlock *CFGBuilder::createBlock(bool add_successor) { CFGBlock *B = cfg->createBlock(); if (add_successor && Succ) diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -11934,7 +11934,7 @@ "unexpected BPF builtin"); // A sequence number, injected into IR builtin functions, to - // prevent CSE given the only difference of the funciton + // prevent CSE given the only difference of the function // may just be the debuginfo metadata. static uint32_t BuiltinSeqNum; @@ -16235,7 +16235,7 @@ auto Pair = EmitAtomicCompareExchange( LV, RValue::get(OldVal), RValue::get(Op2), E->getExprLoc(), llvm::AtomicOrdering::Monotonic, llvm::AtomicOrdering::Monotonic, true); - // Unlike c11's atomic_compare_exchange, accroding to + // Unlike c11's atomic_compare_exchange, according to // https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=functions-compare-swap-compare-swaplp // > In either case, the contents of the memory location specified by addr // > are copied into the memory location specified by old_val_addr. diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -3530,7 +3530,7 @@ switch (RetAI.getKind()) { case ABIArgInfo::InAlloca: - // Aggregrates get evaluated directly into the destination. Sometimes we + // Aggregates get evaluated directly into the destination. Sometimes we // need to return the sret value in a register, though. assert(hasAggregateEvaluationKind(RetTy)); if (RetAI.getInAllocaSRet()) { @@ -3558,7 +3558,7 @@ break; } case TEK_Aggregate: - // Do nothing; aggregrates get evaluated directly into the destination. + // Do nothing; aggregates get evaluated directly into the destination. break; case TEK_Scalar: { LValueBaseInfo BaseInfo; diff --git a/clang/lib/CodeGen/CGOpenMPRuntime.cpp b/clang/lib/CodeGen/CGOpenMPRuntime.cpp --- a/clang/lib/CodeGen/CGOpenMPRuntime.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntime.cpp @@ -4655,7 +4655,7 @@ CodeGenFunction &CGF, QualType &KmpDependInfoTy, const OMPTaskDataTy::DependData &Data) { assert(Data.DepKind == OMPC_DEPEND_depobj && - "Expected depobj dependecy kind."); + "Expected depobj dependency kind."); SmallVector Sizes; SmallVector SizeLVals; ASTContext &C = CGF.getContext(); @@ -4695,7 +4695,7 @@ const OMPTaskDataTy::DependData &Data, Address DependenciesArray) { assert(Data.DepKind == OMPC_DEPEND_depobj && - "Expected depobj dependecy kind."); + "Expected depobj dependency kind."); llvm::Value *ElSize = CGF.getTypeSize(KmpDependInfoTy); { OMPIteratorGeneratorScope IteratorScope( @@ -4751,7 +4751,8 @@ llvm::Value *NumOfDepobjElements = llvm::ConstantInt::get(CGF.IntPtrTy, 0); llvm::Value *NumOfRegularWithIterators = llvm::ConstantInt::get(CGF.IntPtrTy, 0); - // Calculate number of depobj dependecies and regular deps with the iterators. + // Calculate number of depobj dependencies and regular deps with the + // iterators. for (const OMPTaskDataTy::DependData &D : Dependencies) { if (D.DepKind == OMPC_DEPEND_depobj) { SmallVector Sizes = @@ -4825,7 +4826,7 @@ emitDependData(CGF, KmpDependInfoTy, &Pos, Dependencies[I], DependenciesArray); } - // Copy regular dependecies with iterators. + // Copy regular dependencies with iterators. LValue PosLVal = CGF.MakeAddrLValue( CGF.CreateMemTemp(C.getSizeType(), "dep.counter.addr"), C.getSizeType()); CGF.EmitStoreOfScalar(llvm::ConstantInt::get(CGF.SizeTy, Pos), PosLVal); diff --git a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp --- a/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp +++ b/clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp @@ -1168,7 +1168,7 @@ namespace { LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE(); -/// Enum for accesseing the reserved_2 field of the ident_t struct. +/// Enum for accessing the reserved_2 field of the ident_t struct. enum ModeFlagsTy : unsigned { /// Bit set to 1 when in SPMD mode. KMP_IDENT_SPMD_MODE = 0x01, diff --git a/clang/lib/CrossTU/CrossTranslationUnit.cpp b/clang/lib/CrossTU/CrossTranslationUnit.cpp --- a/clang/lib/CrossTU/CrossTranslationUnit.cpp +++ b/clang/lib/CrossTU/CrossTranslationUnit.cpp @@ -458,7 +458,7 @@ return llvm::make_error(index_error_code::missing_definition); } - // Search in the index for the filename where the definition of FuncitonName + // Search in the index for the filename where the definition of FunctionName // resides. if (llvm::Expected FoundForFile = getASTUnitForFile(NameFileMap[FunctionName], DisplayCTUProgress)) { diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5986,8 +5986,8 @@ } } else if (IsOpenMPDevice) { // When compiling for the OpenMP device we want protected visibility by - // default. This prevents the device from accidenally preempting code on the - // host, makes the system more robust, and improves performance. + // default. This prevents the device from accidentally preempting code on + // the host, makes the system more robust, and improves performance. CmdArgs.push_back("-fvisibility"); CmdArgs.push_back("protected"); } diff --git a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp --- a/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp +++ b/clang/lib/ExtractAPI/Serialization/SymbolGraphSerializer.cpp @@ -146,19 +146,19 @@ if (Avail.isDefault()) return None; - Object Availbility; - serializeObject(Availbility, "introducedVersion", + Object Availability; + serializeObject(Availability, "introducedVersion", serializeSemanticVersion(Avail.Introduced)); - serializeObject(Availbility, "deprecatedVersion", + serializeObject(Availability, "deprecatedVersion", serializeSemanticVersion(Avail.Deprecated)); - serializeObject(Availbility, "obsoletedVersion", + serializeObject(Availability, "obsoletedVersion", serializeSemanticVersion(Avail.Obsoleted)); if (Avail.isUnavailable()) - Availbility["isUnconditionallyUnavailable"] = true; + Availability["isUnconditionallyUnavailable"] = true; if (Avail.isUnconditionallyDeprecated()) - Availbility["isUnconditionallyDeprecated"] = true; + Availability["isUnconditionallyDeprecated"] = true; - return Availbility; + return Availability; } /// Get the language name string for interface language references. diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -1719,7 +1719,9 @@ } // Ensure the list has 'type' in it. - if (!llvm::is_contained(Style->QualifierOrder, "type")) + auto type = std::find(Style->QualifierOrder.begin(), + Style->QualifierOrder.end(), "type"); + if (type == Style->QualifierOrder.end()) return ParseError::MissingQualifierType; return ParseError::Success; diff --git a/clang/lib/Format/UnwrappedLineParser.h b/clang/lib/Format/UnwrappedLineParser.h --- a/clang/lib/Format/UnwrappedLineParser.h +++ b/clang/lib/Format/UnwrappedLineParser.h @@ -208,7 +208,7 @@ // // NextTok specifies the next token. A null pointer NextTok is supported, and // 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 account for the analysis. void distributeComments(const SmallVectorImpl &Comments, const FormatToken *NextTok); diff --git a/clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp b/clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp --- a/clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp +++ b/clang/lib/Frontend/Rewrite/RewriteModernObjC.cpp @@ -6723,7 +6723,7 @@ std::string &Result, ArrayRef Ivars, ObjCInterfaceDecl *CDecl) { - // FIXME. visibilty of offset symbols may have to be set; for Darwin + // FIXME. visibility of offset symbols may have to be set; for Darwin // this is what happens: /** if (Ivar->getAccessControl() == ObjCIvarDecl::Private || diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h --- a/clang/lib/Headers/arm_acle.h +++ b/clang/lib/Headers/arm_acle.h @@ -277,7 +277,7 @@ /* * 9.4 Saturating intrinsics * - * FIXME: Change guard to their corrosponding __ARM_FEATURE flag when Q flag + * FIXME: Change guard to their corresponding __ARM_FEATURE flag when Q flag * intrinsics are implemented and the flag is enabled. */ /* 9.4.1 Width-specified saturation intrinsics */ diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -17847,15 +17847,13 @@ uint skip_block_partition_type, uint skip_motion_vector_mask, ulong motion_vectors, uchar bidirectional_weight, uchar skip_sad_adjustment, intel_sub_group_avc_sic_payload_t payload); -intel_sub_group_avc_sic_payload_t __ovld -intel_sub_group_avc_sic_configure_ipe( - uchar luma_intra_partition_mask, uchar intra_neighbour_availabilty, +intel_sub_group_avc_sic_payload_t __ovld intel_sub_group_avc_sic_configure_ipe( + uchar luma_intra_partition_mask, uchar intra_neighbour_availability, uchar left_edge_luma_pixels, uchar upper_left_corner_luma_pixel, uchar upper_edge_luma_pixels, uchar upper_right_edge_luma_pixels, uchar intra_sad_adjustment, intel_sub_group_avc_sic_payload_t payload); -intel_sub_group_avc_sic_payload_t __ovld -intel_sub_group_avc_sic_configure_ipe( - uchar luma_intra_partition_mask, uchar intra_neighbour_availabilty, +intel_sub_group_avc_sic_payload_t __ovld intel_sub_group_avc_sic_configure_ipe( + uchar luma_intra_partition_mask, uchar intra_neighbour_availability, uchar left_edge_luma_pixels, uchar upper_left_corner_luma_pixel, uchar upper_edge_luma_pixels, uchar upper_right_edge_luma_pixels, ushort left_edge_chroma_pixels, ushort upper_left_corner_chroma_pixel, diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp --- a/clang/lib/Lex/Lexer.cpp +++ b/clang/lib/Lex/Lexer.cpp @@ -3368,7 +3368,7 @@ // recover after having emitted a diagnostic. if (!LooseMatch) return llvm::None; - // We do not offer missspelled character names suggestions here + // We do not offer misspelled character names suggestions here // as the set of what would be a valid suggestion depends on context, // and we should not make invalid suggestions. } diff --git a/clang/lib/Parse/ParseStmt.cpp b/clang/lib/Parse/ParseStmt.cpp --- a/clang/lib/Parse/ParseStmt.cpp +++ b/clang/lib/Parse/ParseStmt.cpp @@ -956,7 +956,7 @@ /// StmtResult Parser::ParseCompoundStatement(bool isStmtExpr, unsigned ScopeFlags) { - assert(Tok.is(tok::l_brace) && "Not a compount stmt!"); + assert(Tok.is(tok::l_brace) && "Not a compound stmt!"); // Enter a scope to hold everything within the compound stmt. Compound // statements can always hold declarations. diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -1212,7 +1212,7 @@ enum class OverloadCompare { BothViable, Dominates, Dominated }; // Will Candidate ever be called on the object, when overloaded with Incumbent? // Returns Dominates if Candidate is always called, Dominated if Incumbent is -// always called, BothViable if either may be called dependending on arguments. +// always called, BothViable if either may be called depending on arguments. // Precondition: must actually be overloads! static OverloadCompare compareOverloads(const CXXMethodDecl &Candidate, const CXXMethodDecl &Incumbent, diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3031,7 +3031,7 @@ continue; } else if (isa(NewAttribute)) { // We allow to add OMP[Begin]DeclareVariantAttr to be added to - // declarations after defintions. + // declarations after definitions. ++I; continue; } @@ -10564,7 +10564,7 @@ /// (from the current #pragma code-seg value). /// /// \param FD Function being declared. -/// \param IsDefinition Whether it is a definition or just a declarartion. +/// \param IsDefinition Whether it is a definition or just a declaration. /// \returns A CodeSegAttr or SectionAttr to apply to the function or /// nullptr if no attribute should be added. Attr *Sema::getImplicitCodeSegOrSectionAttrForFunction(const FunctionDecl *FD, @@ -15487,8 +15487,8 @@ // Because typo correction is expensive, only do it if the implicit // function declaration is going to be treated as an error. // - // Perform the corection before issuing the main diagnostic, as some consumers - // use typo-correction callbacks to enhance the main diagnostic. + // Perform the correction before issuing the main diagnostic, as some + // consumers use typo-correction callbacks to enhance the main diagnostic. if (S && !ExternCPrev && (Diags.getDiagnosticLevel(diag_id, Loc) >= DiagnosticsEngine::Error)) { DeclFilterCCC CCC{}; @@ -19211,7 +19211,7 @@ else Diag(PrevDecl->getLocation(), diag::warn_redefine_extname_not_applied) << /*Variable*/(isa(PrevDecl) ? 0 : 1) << PrevDecl; - // Otherwise, add a label atttibute to ExtnameUndeclaredIdentifiers. + // Otherwise, add a label attribute to ExtnameUndeclaredIdentifiers. } else (void)ExtnameUndeclaredIdentifiers.insert(std::make_pair(Name, Attr)); } diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -1876,7 +1876,8 @@ for (const auto *I : D->specific_attrs()) { // Cannot have two ownership attributes of different kinds for the same // index. - if (I->getOwnKind() != K && llvm::is_contained(I->args(), Idx)) { + if (I->getOwnKind() != K && I->args_end() != + std::find(I->args_begin(), I->args_end(), Idx)) { S.Diag(AL.getLoc(), diag::err_attributes_are_not_compatible) << AL << I; return; } else if (K == OwnershipAttr::Returns && diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -3754,7 +3754,7 @@ /// DiagnoseDuplicateIvars - /// Check for duplicate ivars in the entire class at the start of -/// \@implementation. This becomes necesssary because class extension can +/// \@implementation. This becomes necessary because class extension can /// add ivars to a class in random order which will not be known until /// class's \@implementation is seen. void Sema::DiagnoseDuplicateIvars(ObjCInterfaceDecl *ID, diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -12569,7 +12569,7 @@ /// Returns false if resolveAddressOfSingleOverloadCandidate fails. /// Otherwise, returns true. This may emit diagnostics and return true. bool Sema::resolveAndFixAddressOfSingleOverloadCandidate( - ExprResult &SrcExpr, bool DoFunctionPointerConverion) { + ExprResult &SrcExpr, bool DoFunctionPointerConversion) { Expr *E = SrcExpr.get(); assert(E->getType() == Context.OverloadTy && "SrcExpr must be an overload"); @@ -12585,7 +12585,7 @@ DiagnoseUseOfDecl(Found, E->getExprLoc()); CheckAddressOfMemberAccess(E, DAP); Expr *Fixed = FixOverloadedFunctionReference(E, DAP, Found); - if (DoFunctionPointerConverion && Fixed->getType()->isFunctionType()) + if (DoFunctionPointerConversion && Fixed->getType()->isFunctionType()) SrcExpr = DefaultFunctionArrayConversion(Fixed, /*Diagnose=*/false); else SrcExpr = Fixed; @@ -12687,10 +12687,9 @@ // expression, regardless of whether or not it succeeded. Always // returns true if 'complain' is set. bool Sema::ResolveAndFixSingleFunctionTemplateSpecialization( - ExprResult &SrcExpr, bool doFunctionPointerConverion, - bool complain, SourceRange OpRangeForComplaining, - QualType DestTypeForComplaining, - unsigned DiagIDForComplaining) { + ExprResult &SrcExpr, bool doFunctionPointerConversion, bool complain, + SourceRange OpRangeForComplaining, QualType DestTypeForComplaining, + unsigned DiagIDForComplaining) { assert(SrcExpr.get()->getType() == Context.OverloadTy); OverloadExpr::FindResult ovl = OverloadExpr::find(SrcExpr.get()); @@ -12731,7 +12730,7 @@ FixOverloadedFunctionReference(SrcExpr.get(), found, fn); // If desired, do function-to-pointer decay. - if (doFunctionPointerConverion) { + if (doFunctionPointerConversion) { SingleFunctionExpression = DefaultFunctionArrayLvalueConversion(SingleFunctionExpression.get()); if (SingleFunctionExpression.isInvalid()) { diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp --- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -187,7 +187,7 @@ // This trait is responsible for storing the index of the element that is to be // constructed in the next iteration. As a result a CXXConstructExpr is only -// stored if it is array type. Also the index is the index of the continous +// stored if it is array type. Also the index is the index of the continuous // memory region, which is important for multi-dimensional arrays. E.g:: int // arr[2][2]; assume arr[1][1] will be the next element under construction, so // the index is 3. diff --git a/clang/lib/Tooling/AllTUsExecution.cpp b/clang/lib/Tooling/AllTUsExecution.cpp --- a/clang/lib/Tooling/AllTUsExecution.cpp +++ b/clang/lib/Tooling/AllTUsExecution.cpp @@ -121,7 +121,7 @@ [&](std::string Path) { Log("[" + std::to_string(Count()) + "/" + TotalNumStr + "] Processing file " + Path); - // Each thread gets an indepent copy of a VFS to allow different + // Each thread gets an independent copy of a VFS to allow different // concurrent working directories. IntrusiveRefCntPtr FS = llvm::vfs::createPhysicalFileSystem(); diff --git a/clang/lib/Tooling/Core/Replacement.cpp b/clang/lib/Tooling/Core/Replacement.cpp --- a/clang/lib/Tooling/Core/Replacement.cpp +++ b/clang/lib/Tooling/Core/Replacement.cpp @@ -270,7 +270,7 @@ assert(R.getLength() == 0); // `I` is also an insertion, `R` and `I` conflict. if (I->getLength() == 0) { - // Check if two insertions are order-indepedent: if inserting them in + // Check if two insertions are order-independent: if inserting them in // either order produces the same text, they are order-independent. if ((R.getReplacementText() + I->getReplacementText()).str() != (I->getReplacementText() + R.getReplacementText()).str()) @@ -319,7 +319,7 @@ Replaces.insert(R); } else { // `I` overlaps with `R`. We need to check `R` against all overlapping - // replacements to see if they are order-indepedent. If they are, merge `R` + // replacements to see if they are order-independent. If they are, merge `R` // with them and replace them with the merged replacements. auto MergeBegin = I; auto MergeEnd = std::next(I); diff --git a/clang/lib/Tooling/Syntax/Tokens.cpp b/clang/lib/Tooling/Syntax/Tokens.cpp --- a/clang/lib/Tooling/Syntax/Tokens.cpp +++ b/clang/lib/Tooling/Syntax/Tokens.cpp @@ -751,7 +751,7 @@ SpelledTokens[NextSpelled].location() <= KnownEnd) ++NextSpelled; FlushMapping(); // Emits [NextSpelled, KnownEnd] - // Now the loop contitues and will emit (KnownEnd, Target). + // Now the loop continues and will emit (KnownEnd, Target). } else { ++NextSpelled; } diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt --- a/clang/test/CMakeLists.txt +++ b/clang/test/CMakeLists.txt @@ -66,6 +66,7 @@ clang-import-test clang-rename clang-refactor + clang-repl clang-diff clang-scan-deps diagtool @@ -146,12 +147,6 @@ endif() endif() -if (HAVE_CLANG_REPL_SUPPORT) - list(APPEND CLANG_TEST_DEPS - clang-repl - ) -endif() - # Copy gen_ast_dump_json_test.py to the clang build dir. This allows invoking # it without having to pass the --clang= argument configure_file(AST/gen_ast_dump_json_test.py diff --git a/clang/test/CodeGen/vectorcall.c b/clang/test/CodeGen/vectorcall.c --- a/clang/test/CodeGen/vectorcall.c +++ b/clang/test/CodeGen/vectorcall.c @@ -110,7 +110,7 @@ // Vectorcall in both architectures allows passing of an HVA as long as there is room, // even if it is not one of the first 6 arguments. First pass puts p4 into a // register on both. p9 ends up in a register in x86 only. Second pass puts p1 -// in a register, does NOT put p7 in a register (since theres no room), then puts +// in a register, does NOT put p7 in a register (since there's no room), then puts // p8 in a register. void __vectorcall HVAAnywhere(struct HFA2 p1, int p2, int p3, float p4, int p5, int p6, struct HFA4 p7, struct HFA2 p8, float p9){} // X32: define dso_local x86_vectorcallcc void @"\01HVAAnywhere@@88"(%struct.HFA2 inreg %p1.coerce, i32 inreg noundef %p2, i32 inreg noundef %p3, float inreg noundef %p4, i32 noundef %p5, i32 noundef %p6, %struct.HFA4* noundef %p7, %struct.HFA2 inreg %p8.coerce, float inreg noundef %p9) diff --git a/clang/test/CodeGenCXX/target-features-error.cpp b/clang/test/CodeGenCXX/target-features-error.cpp --- a/clang/test/CodeGenCXX/target-features-error.cpp +++ b/clang/test/CodeGenCXX/target-features-error.cpp @@ -77,7 +77,7 @@ //expected-error@+1{{'~CtorAndDTor' requires target feature 'avx512f'}} c2.~CtorAndDTor(); } - // FIXME: These need to be given a line number, however theres no good way + // FIXME: These need to be given a line number, however there's no good way // to get to the SourceLocation of anything by the time we're doing CodeGen // cleanups. //expected-error@*{{'~CtorAndDTor' requires target feature 'avx512f'}} diff --git a/clang/test/Interpreter/code-undo.cpp b/clang/test/Interpreter/code-undo.cpp --- a/clang/test/Interpreter/code-undo.cpp +++ b/clang/test/Interpreter/code-undo.cpp @@ -1,5 +1,6 @@ // RUN: clang-repl "int i = 10;" 'extern "C" int printf(const char*,...);' \ // RUN: 'auto r1 = printf("i = %d\n", i);' | FileCheck --check-prefix=CHECK-DRIVER %s +// REQUIRES: host-supports-jit // UNSUPPORTED: system-aix // CHECK-DRIVER: i = 10 // RUN: cat %s | clang-repl | FileCheck %s diff --git a/clang/test/Interpreter/execute-weak.cpp b/clang/test/Interpreter/execute-weak.cpp --- a/clang/test/Interpreter/execute-weak.cpp +++ b/clang/test/Interpreter/execute-weak.cpp @@ -1,6 +1,7 @@ // RUN: clang-repl "int x = 10;" "int y=7; err;" "int y = 10;" // RUN: clang-repl "int i = 10;" 'extern "C" int printf(const char*,...);' \ // RUN: 'auto r1 = printf("i = %d\n", i);' | FileCheck --check-prefix=CHECK-DRIVER %s +// REQUIRES: host-supports-jit // CHECK-DRIVER: i = 10 // UNSUPPORTED: system-aix, system-windows // RUN: cat %s | clang-repl | FileCheck %s diff --git a/clang/test/Interpreter/execute.cpp b/clang/test/Interpreter/execute.cpp --- a/clang/test/Interpreter/execute.cpp +++ b/clang/test/Interpreter/execute.cpp @@ -2,6 +2,7 @@ // RUN: clang-repl "int x = 10;" "int y=7; err;" "int y = 10;" // RUN: clang-repl "int i = 10;" 'extern "C" int printf(const char*,...);' \ // RUN: 'auto r1 = printf("i = %d\n", i);' | FileCheck --check-prefix=CHECK-DRIVER %s +// REQUIRES: host-supports-jit // UNSUPPORTED: system-aix // CHECK-DRIVER: i = 10 // RUN: cat %s | clang-repl | FileCheck %s diff --git a/clang/test/Interpreter/global-dtor-win.cpp b/clang/test/Interpreter/global-dtor-win.cpp new file mode 100644 --- /dev/null +++ b/clang/test/Interpreter/global-dtor-win.cpp @@ -0,0 +1,14 @@ +// clang-format off +// FIXME: Merge into global-dtor.cpp when exception support arrives on windows-msvc +// REQUIRES: host-supports-jit && windows-msvc +// +// Tests that a global destructor is ran in windows-msvc platform. +// +// RUN: cat %s | clang-repl | FileCheck %s + +extern "C" int printf(const char *, ... ); + +struct D { float f = 1.0; D *m = nullptr; D(){} ~D() { printf("D[f=%f, m=0x%llx]\n", f, reinterpret_cast(m)); }} d; +// CHECK: D[f=1.000000, m=0x0] + +%quit \ No newline at end of file diff --git a/clang/test/Interpreter/global-dtor.cpp b/clang/test/Interpreter/global-dtor.cpp --- a/clang/test/Interpreter/global-dtor.cpp +++ b/clang/test/Interpreter/global-dtor.cpp @@ -1,4 +1,5 @@ // clang-format off +// REQUIRES: host-supports-jit, host-supports-exception // UNSUPPORTED: system-aix // // Tests that a global destructor is ran on platforms with gnu exception support. diff --git a/clang/test/Interpreter/lit.local.cfg b/clang/test/Interpreter/lit.local.cfg deleted file mode 100644 --- a/clang/test/Interpreter/lit.local.cfg +++ /dev/null @@ -1,2 +0,0 @@ -if 'host-supports-jit' not in config.available_features: - config.unsupported = True \ No newline at end of file diff --git a/clang/test/Interpreter/plugins.cpp b/clang/test/Interpreter/plugins.cpp --- a/clang/test/Interpreter/plugins.cpp +++ b/clang/test/Interpreter/plugins.cpp @@ -1,7 +1,7 @@ // RUN: cat %s | clang-repl -Xcc -Xclang -Xcc -load -Xcc -Xclang \ // RUN: -Xcc %llvmshlibdir/PrintFunctionNames%pluginext -Xcc -Xclang\ // RUN: -Xcc -add-plugin -Xcc -Xclang -Xcc print-fns 2>&1 | FileCheck %s -// REQUIRES: plugins, examples +// REQUIRES: host-supports-jit, plugins, examples int i = 10; extern "C" int printf(const char*,...); diff --git a/clang/test/Interpreter/simple-exception.cpp b/clang/test/Interpreter/simple-exception.cpp --- a/clang/test/Interpreter/simple-exception.cpp +++ b/clang/test/Interpreter/simple-exception.cpp @@ -1,4 +1,5 @@ // clang-format off +// REQUIRES: host-supports-jit, host-supports-exception // UNSUPPORTED: system-aix // XFAIL: arm, arm64-apple, windows-msvc, windows-gnu // RUN: cat %s | clang-repl | FileCheck %s diff --git a/clang/test/SemaCXX/builtin-align-cxx.cpp b/clang/test/SemaCXX/builtin-align-cxx.cpp --- a/clang/test/SemaCXX/builtin-align-cxx.cpp +++ b/clang/test/SemaCXX/builtin-align-cxx.cpp @@ -200,7 +200,7 @@ static_assert(__builtin_align_down(&align32array[7], 4) == &align32array[4], ""); static_assert(__builtin_align_down(&align32array[8], 4) == &align32array[8], ""); -// Achiving the same thing using casts to uintptr_t is not allowed: +// Achieving the same thing using casts to uintptr_t is not allowed: static_assert((char *)((__UINTPTR_TYPE__)&align32array[7] & ~3) == &align32array[4], ""); // expected-error{{not an integral constant expression}} static_assert(__builtin_align_down(&align32array[1], 4) == &align32array[0], ""); diff --git a/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl b/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl --- a/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl +++ b/clang/test/SemaOpenCL/usm-address-spaces-conversions.cl @@ -7,7 +7,7 @@ * spaces: global_device and global_host that are a subset of __global address * space. As ISO/IEC TR 18037 5.1.3 declares - it's possible to implicitly * convert a subset address space to a superset address space, while conversion - * in a reversed direction could be achived only with an explicit cast */ + * in a reversed direction could be achieved only with an explicit cast */ #ifdef GENERIC #define AS_COMP __generic diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py --- a/clang/test/lit.cfg.py +++ b/clang/test/lit.cfg.py @@ -74,6 +74,7 @@ clang_repl_exe = lit.util.which('clang-repl', config.clang_tools_dir) if not clang_repl_exe: + print('clang-repl not found') return False try: @@ -91,6 +92,9 @@ if have_host_jit_feature_support('jit'): config.available_features.add('host-supports-jit') +if have_host_jit_feature_support('exception'): + config.available_features.add('host-supports-exception') + if config.clang_staticanalyzer: config.available_features.add('staticanalyzer') tools.append('clang-check') diff --git a/clang/tools/CMakeLists.txt b/clang/tools/CMakeLists.txt --- a/clang/tools/CMakeLists.txt +++ b/clang/tools/CMakeLists.txt @@ -14,9 +14,7 @@ add_clang_subdirectory(clang-offload-bundler) add_clang_subdirectory(clang-offload-wrapper) add_clang_subdirectory(clang-scan-deps) -if(HAVE_CLANG_REPL_SUPPORT) - add_clang_subdirectory(clang-repl) -endif() +add_clang_subdirectory(clang-repl) add_clang_subdirectory(c-index-test) diff --git a/clang/tools/clang-repl/ClangRepl.cpp b/clang/tools/clang-repl/ClangRepl.cpp --- a/clang/tools/clang-repl/ClangRepl.cpp +++ b/clang/tools/clang-repl/ClangRepl.cpp @@ -28,6 +28,8 @@ llvm::cl::CommaSeparated); static llvm::cl::opt OptHostSupportsJit("host-supports-jit", llvm::cl::Hidden); +static llvm::cl::opt OptHostSupportsException("host-supports-exception", + llvm::cl::Hidden); static llvm::cl::list OptInputs(llvm::cl::Positional, llvm::cl::desc("[code to run]")); @@ -65,6 +67,42 @@ return Errs ? EXIT_FAILURE : EXIT_SUCCESS; } +// Check if the host environment supports c++ exception handling +// by querying the existence of symbol __cxa_throw. +static bool checkExceptionSupport() { + auto J = llvm::orc::LLJITBuilder().create(); + if (!J) { + llvm::consumeError(J.takeError()); + return false; + } + + std::vector Dummy; + auto CI = clang::IncrementalCompilerBuilder::create(Dummy); + if (!CI) { + llvm::consumeError(CI.takeError()); + return false; + } + + auto Interp = clang::Interpreter::create(std::move(*CI)); + if (!Interp) { + llvm::consumeError(Interp.takeError()); + return false; + } + + if (auto Err = (*Interp)->ParseAndExecute("")) { + llvm::consumeError(std::move(Err)); + return false; + } + + auto Sym = (*Interp)->getSymbolAddress("__cxa_throw"); + if (!Sym) { + llvm::consumeError(Sym.takeError()); + return false; + } + + return true; +} + llvm::ExitOnError ExitOnErr; int main(int argc, const char **argv) { ExitOnErr.setBanner("clang-repl: "); @@ -89,6 +127,14 @@ return 0; } + if (OptHostSupportsException) { + if (checkExceptionSupport()) + llvm::outs() << "true\n"; + else + llvm::outs() << "false\n"; + return 0; + } + // FIXME: Investigate if we could use runToolOnCodeWithArgs from tooling. It // can replace the boilerplate code for creation of the compiler instance. auto CI = ExitOnErr(clang::IncrementalCompilerBuilder::create(ClangArgv)); diff --git a/clang/tools/clang-shlib/CMakeLists.txt b/clang/tools/clang-shlib/CMakeLists.txt --- a/clang/tools/clang-shlib/CMakeLists.txt +++ b/clang/tools/clang-shlib/CMakeLists.txt @@ -15,7 +15,7 @@ endif() if (BUILD_SHARED_LIBS) # If we are building static libraries, then we don't need to add the static - # libraries as a depedency, because we are already linking against the + # libraries as a dependency, because we are already linking against the # individual object files. list(APPEND _DEPS $) endif() diff --git a/clang/tools/include-mapping/gen_std.py b/clang/tools/include-mapping/gen_std.py --- a/clang/tools/include-mapping/gen_std.py +++ b/clang/tools/include-mapping/gen_std.py @@ -8,7 +8,7 @@ #===------------------------------------------------------------------------===# """gen_std.py is a tool to generate a lookup table (from qualified names to -include headers) for C/C++ Standard Library symbols by parsing archieved HTML +include headers) for C/C++ Standard Library symbols by parsing archived HTML files from cppreference. The generated files are located in clang/include/Tooling/Inclusions. diff --git a/clang/tools/scan-build-py/lib/libear/ear.c b/clang/tools/scan-build-py/lib/libear/ear.c --- a/clang/tools/scan-build-py/lib/libear/ear.c +++ b/clang/tools/scan-build-py/lib/libear/ear.c @@ -447,7 +447,7 @@ pthread_mutex_unlock(&mutex); } -/* update environment assure that chilren processes will copy the desired +/* update environment assure that children processes will copy the desired * behaviour */ static int bear_capture_env_t(bear_env_t *env) { @@ -602,4 +602,4 @@ free((void *)*it); } free((void *)in); -} \ No newline at end of file +} diff --git a/clang/unittests/AST/StructuralEquivalenceTest.cpp b/clang/unittests/AST/StructuralEquivalenceTest.cpp --- a/clang/unittests/AST/StructuralEquivalenceTest.cpp +++ b/clang/unittests/AST/StructuralEquivalenceTest.cpp @@ -186,7 +186,7 @@ } // This test is disabled for now. -// FIXME Whether this is equivalent is dependendant on the target. +// FIXME Whether this is equivalent is dependent on the target. TEST_F(StructuralEquivalenceTest, DISABLED_CharVsSignedChar) { auto Decls = makeNamedDecls("char foo;", "signed char foo;", Lang_CXX03); EXPECT_FALSE(testStructuralMatch(Decls)); diff --git a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp --- a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp @@ -655,7 +655,7 @@ CallFunctionF)); } - // Depedent calls don't match. + // Dependent calls don't match. EXPECT_TRUE( notMatches("void f(int); template void g(T t) { f(t); }", CallFunctionF)); diff --git a/clang/unittests/CMakeLists.txt b/clang/unittests/CMakeLists.txt --- a/clang/unittests/CMakeLists.txt +++ b/clang/unittests/CMakeLists.txt @@ -35,9 +35,7 @@ add_subdirectory(Rewrite) add_subdirectory(Sema) add_subdirectory(CodeGen) -if(HAVE_CLANG_REPL_SUPPORT) - add_subdirectory(Interpreter) -endif() +add_subdirectory(Interpreter) # FIXME: libclang unit tests are disabled on Windows due # to failures, mostly in libclang.VirtualFileOverlay_*. if(NOT WIN32 AND CLANG_TOOL_LIBCLANG_BUILD) diff --git a/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp b/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp --- a/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp +++ b/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp @@ -113,6 +113,17 @@ Triple.getArch() == llvm::Triple::aarch64_32)) return; + // Check if platform does not support exceptions. + { + // Force the creation of an incremental executor to call getSymbolAddress. + llvm::cantFail(Interp->ParseAndExecute("")); + auto Sym = Interp->getSymbolAddress("__cxa_throw"); + if (!Sym) { + LLVMConsumeError(llvm::wrap(Sym.takeError())); + return; + } + } + llvm::cantFail(Interp->ParseAndExecute(ExceptionCode)); testing::internal::CaptureStdout(); auto ThrowException = diff --git a/clang/unittests/Tooling/SourceCodeTest.cpp b/clang/unittests/Tooling/SourceCodeTest.cpp --- a/clang/unittests/Tooling/SourceCodeTest.cpp +++ b/clang/unittests/Tooling/SourceCodeTest.cpp @@ -255,7 +255,7 @@ Visitor.runOverAnnotated(R"cpp( #define ATTR __attribute__((deprecated("message"))) $r[[ATTR - // Commment. + // Comment. int x;]])cpp"); } @@ -410,7 +410,7 @@ Visit(R"cpp( #define ATTR __attribute__((deprecated("message"))) $r[[ATTR - // Commment. + // Comment. int x;]])cpp"); } diff --git a/clang/utils/TableGen/NeonEmitter.cpp b/clang/utils/TableGen/NeonEmitter.cpp --- a/clang/utils/TableGen/NeonEmitter.cpp +++ b/clang/utils/TableGen/NeonEmitter.cpp @@ -441,7 +441,7 @@ /// Return the index that parameter PIndex will sit at /// in a generated function call. This is often just PIndex, /// but may not be as things such as multiple-vector operands - /// and sret parameters need to be taken into accont. + /// and sret parameters need to be taken into account. unsigned getGeneratedParamIdx(unsigned PIndex) { unsigned Idx = 0; if (getReturnType().getNumVectors() > 1) diff --git a/clang/utils/analyzer/SATest.py b/clang/utils/analyzer/SATest.py --- a/clang/utils/analyzer/SATest.py +++ b/clang/utils/analyzer/SATest.py @@ -321,7 +321,7 @@ dock_parser.add_argument("--clang-dir", action="store", default="", help="Path to find/install LLVM installation.") dock_parser.add_argument("rest", nargs=argparse.REMAINDER, default=[], - help="Additionall args that will be forwarded " + help="Additional args that will be forwarded " "to the docker's entrypoint.") dock_parser.set_defaults(func=docker) diff --git a/clang/utils/analyzer/exploded-graph-rewriter.py b/clang/utils/analyzer/exploded-graph-rewriter.py --- a/clang/utils/analyzer/exploded-graph-rewriter.py +++ b/clang/utils/analyzer/exploded-graph-rewriter.py @@ -388,7 +388,7 @@ # Also on Windows macros __FILE__ produces specific delimiters `\` # and a directory or file may starts with the letter `l`. # Find all `\l` (like `,\l`, `}\l`, `[\l`) except `\\l`, - # because the literal as a rule containes multiple `\` before `\l`. + # because the literal as a rule contains multiple `\` before `\l`. node_label = re.sub(r'(?
  • scan-build: scan-build is the high-level command line utility for running the analyzer
  • -
  • scan-view: scan-view a companion comannd line +
  • scan-view: scan-view a companion command line utility to scan-build, scan-view is used to view analysis results generated by scan-build. There is an option that one can pass to scan-build to cause scan-view to