Author: Reid Kleckner Date: 2020-02-27T10:05:30-08:00 New Revision: 04da3dfecc199a7fdd262b06eeb399fc8ce0d1f6
URL: https://github.com/llvm/llvm-project/commit/04da3dfecc199a7fdd262b06eeb399fc8ce0d1f6 DIFF: https://github.com/llvm/llvm-project/commit/04da3dfecc199a7fdd262b06eeb399fc8ce0d1f6.diff LOG: Forward declare special case lists This avoids pulling in unordered_map from TrigramIndex.h: $ diff -u thedeps-before.txt thedeps-after.txt | \ grep '^[-+] ' | sort | uniq -c | sort -nr 976 - ../llvm/include/llvm/Support/TrigramIndex.h 976 - ../llvm/include/llvm/Support/SpecialCaseList.h 976 - ../clang/include/clang/Basic/SanitizerSpecialCaseList.h 502 - ../../../PROGRA~2/MIB055~1/2019/PROFES~1/VC/Tools/MSVC/14.24.28314/include/unordered_map 467 - ../../../PROGRA~2/MIB055~1/2019/PROFES~1/VC/Tools/MSVC/14.24.28314/include/xhash 467 - ../../../PROGRA~2/MIB055~1/2019/PROFES~1/VC/Tools/MSVC/14.24.28314/include/xbit_ops.h 212 - ../llvm/include/llvm/ADT/StringSet.h Added: Modified: clang/include/clang/Basic/SanitizerBlacklist.h clang/include/clang/Basic/SanitizerSpecialCaseList.h clang/include/clang/Basic/XRayLists.h clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h clang/lib/Basic/SanitizerBlacklist.cpp clang/lib/Basic/XRayLists.cpp clang/lib/Sema/SemaDecl.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/SanitizerBlacklist.h b/clang/include/clang/Basic/SanitizerBlacklist.h index 29af28b84365..c874ff28aacc 100644 --- a/clang/include/clang/Basic/SanitizerBlacklist.h +++ b/clang/include/clang/Basic/SanitizerBlacklist.h @@ -14,15 +14,17 @@ #define LLVM_CLANG_BASIC_SANITIZERBLACKLIST_H #include "clang/Basic/LLVM.h" -#include "clang/Basic/SanitizerSpecialCaseList.h" -#include "clang/Basic/Sanitizers.h" #include "clang/Basic/SourceLocation.h" -#include "clang/Basic/SourceManager.h" #include "llvm/ADT/StringRef.h" #include <memory> +#include <vector> namespace clang { +class SanitizerMask; +class SourceManager; +class SanitizerSpecialCaseList; + class SanitizerBlacklist { std::unique_ptr<SanitizerSpecialCaseList> SSCL; SourceManager &SM; @@ -30,6 +32,7 @@ class SanitizerBlacklist { public: SanitizerBlacklist(const std::vector<std::string> &BlacklistPaths, SourceManager &SM); + ~SanitizerBlacklist(); bool isBlacklistedGlobal(SanitizerMask Mask, StringRef GlobalName, StringRef Category = StringRef()) const; bool isBlacklistedType(SanitizerMask Mask, StringRef MangledTypeName, diff --git a/clang/include/clang/Basic/SanitizerSpecialCaseList.h b/clang/include/clang/Basic/SanitizerSpecialCaseList.h index 88d31a6cbcce..c84894dae298 100644 --- a/clang/include/clang/Basic/SanitizerSpecialCaseList.h +++ b/clang/include/clang/Basic/SanitizerSpecialCaseList.h @@ -10,6 +10,7 @@ // SanitizerMask. // //===----------------------------------------------------------------------===// + #ifndef LLVM_CLANG_BASIC_SANITIZERSPECIALCASELIST_H #define LLVM_CLANG_BASIC_SANITIZERSPECIALCASELIST_H @@ -17,8 +18,14 @@ #include "clang/Basic/Sanitizers.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/SpecialCaseList.h" -#include "llvm/Support/VirtualFileSystem.h" #include <memory> +#include <vector> + +namespace llvm { +namespace vfs { +class FileSystem; +} +} // namespace llvm namespace clang { diff --git a/clang/include/clang/Basic/XRayLists.h b/clang/include/clang/Basic/XRayLists.h index cf464f9e5478..7ea9d9789aab 100644 --- a/clang/include/clang/Basic/XRayLists.h +++ b/clang/include/clang/Basic/XRayLists.h @@ -14,14 +14,18 @@ #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" -#include "clang/Basic/SourceManager.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" -#include "llvm/Support/SpecialCaseList.h" #include <memory> +namespace llvm { +class SpecialCaseList; +} + namespace clang { +class SourceManager; + class XRayFunctionFilter { std::unique_ptr<llvm::SpecialCaseList> AlwaysInstrument; std::unique_ptr<llvm::SpecialCaseList> NeverInstrument; @@ -32,6 +36,7 @@ class XRayFunctionFilter { XRayFunctionFilter(ArrayRef<std::string> AlwaysInstrumentPaths, ArrayRef<std::string> NeverInstrumentPaths, ArrayRef<std::string> AttrListPaths, SourceManager &SM); + ~XRayFunctionFilter(); enum class ImbueAttribute { NONE, diff --git a/clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h b/clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h index c5d12fc73e1a..c490bb38c167 100644 --- a/clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h +++ b/clang/include/clang/Tooling/DependencyScanning/ModuleDepCollector.h @@ -19,8 +19,8 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringSet.h" #include "llvm/Support/raw_ostream.h" - #include <string> +#include <unordered_map> namespace clang { namespace tooling { diff --git a/clang/lib/Basic/SanitizerBlacklist.cpp b/clang/lib/Basic/SanitizerBlacklist.cpp index 4f71349350fd..48cc229b867a 100644 --- a/clang/lib/Basic/SanitizerBlacklist.cpp +++ b/clang/lib/Basic/SanitizerBlacklist.cpp @@ -10,7 +10,11 @@ // sanitizers. // //===----------------------------------------------------------------------===// + #include "clang/Basic/SanitizerBlacklist.h" +#include "clang/Basic/SanitizerSpecialCaseList.h" +#include "clang/Basic/Sanitizers.h" +#include "clang/Basic/SourceManager.h" using namespace clang; @@ -20,6 +24,8 @@ SanitizerBlacklist::SanitizerBlacklist( BlacklistPaths, SM.getFileManager().getVirtualFileSystem())), SM(SM) {} +SanitizerBlacklist::~SanitizerBlacklist() = default; + bool SanitizerBlacklist::isBlacklistedGlobal(SanitizerMask Mask, StringRef GlobalName, StringRef Category) const { diff --git a/clang/lib/Basic/XRayLists.cpp b/clang/lib/Basic/XRayLists.cpp index 222a28f79cc5..f9827beccf57 100644 --- a/clang/lib/Basic/XRayLists.cpp +++ b/clang/lib/Basic/XRayLists.cpp @@ -9,7 +9,10 @@ // User-provided filters for always/never XRay instrumenting certain functions. // //===----------------------------------------------------------------------===// + #include "clang/Basic/XRayLists.h" +#include "clang/Basic/SourceManager.h" +#include "llvm/Support/SpecialCaseList.h" using namespace clang; @@ -25,6 +28,8 @@ XRayFunctionFilter::XRayFunctionFilter( AttrListPaths, SM.getFileManager().getVirtualFileSystem())), SM(SM) {} +XRayFunctionFilter::~XRayFunctionFilter() = default; + XRayFunctionFilter::ImbueAttribute XRayFunctionFilter::shouldImbueFunction(StringRef FunctionName) const { // First apply the always instrument list, than if it isn't an "always" see diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 7fe3213e2a23..ffe620b122bd 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -47,6 +47,7 @@ #include <algorithm> #include <cstring> #include <functional> +#include <unordered_map> using namespace clang; using namespace sema; @@ -17570,9 +17571,11 @@ static void CheckForDuplicateEnumValues(Sema &S, ArrayRef<Decl *> Elements, typedef SmallVector<std::unique_ptr<ECDVector>, 3> DuplicatesVector; typedef llvm::PointerUnion<EnumConstantDecl*, ECDVector*> DeclOrVector; + + // DenseMaps cannot contain the all ones int64_t value, so use unordered_map. typedef std::unordered_map<int64_t, DeclOrVector> ValueToVectorMap; - // Use int64_t as a key to avoid needing special handling for DenseMap keys. + // Use int64_t as a key to avoid needing special handling for map keys. auto EnumConstantToKey = [](const EnumConstantDecl *D) { llvm::APSInt Val = D->getInitVal(); return Val.isSigned() ? Val.getSExtValue() : Val.getZExtValue(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits