Skip to content

Commit 979da9a

Browse files
committed
Avoid including Builtins.h in Preprocessor.h
Builtins are rarely if ever accessed via the Preprocessor. They are typically found on the ASTContext, so there should be no performance penalty to using a pointer indirection to store the builtin context.
1 parent 4d23764 commit 979da9a

File tree

14 files changed

+23
-9
lines changed

14 files changed

+23
-9
lines changed

clang-tools-extra/clang-tidy/bugprone/MacroRepeatedSideEffectsCheck.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "MacroRepeatedSideEffectsCheck.h"
10+
#include "clang/Basic/Builtins.h"
1011
#include "clang/Frontend/CompilerInstance.h"
1112
#include "clang/Lex/MacroArgs.h"
1213
#include "clang/Lex/PPCallbacks.h"

clang-tools-extra/clangd/index/FileIndex.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "index/Merge.h"
1717
#include "index/SymbolOrigin.h"
1818
#include "index/dex/Dex.h"
19+
#include "clang/AST/ASTContext.h"
1920
#include "clang/Index/IndexingAction.h"
2021
#include "clang/Index/IndexingOptions.h"
2122
#include "clang/Lex/MacroInfo.h"

clang-tools-extra/clangd/index/FileIndex.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include <memory>
2626

2727
namespace clang {
28+
class ASTContext;
2829
namespace clangd {
2930
class ParsedAST;
3031

clang/include/clang/Basic/Builtins.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
namespace clang {
2626
class TargetInfo;
2727
class IdentifierTable;
28-
class ASTContext;
29-
class QualType;
3028
class LangOptions;
3129

3230
enum LanguageID {

clang/include/clang/Lex/Preprocessor.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#ifndef LLVM_CLANG_LEX_PREPROCESSOR_H
1515
#define LLVM_CLANG_LEX_PREPROCESSOR_H
1616

17-
#include "clang/Basic/Builtins.h"
1817
#include "clang/Basic/Diagnostic.h"
1918
#include "clang/Basic/IdentifierTable.h"
2019
#include "clang/Basic/LLVM.h"
@@ -81,6 +80,10 @@ class PreprocessorOptions;
8180
class ScratchBuffer;
8281
class TargetInfo;
8382

83+
namespace Builtin {
84+
class Context;
85+
}
86+
8487
/// Stores token information for comparing actual tokens with
8588
/// predefined values. Only handles simple tokens and identifiers.
8689
class TokenValue {
@@ -239,7 +242,7 @@ class Preprocessor {
239242
SelectorTable Selectors;
240243

241244
/// Information about builtins.
242-
Builtin::Context BuiltinInfo;
245+
std::unique_ptr<Builtin::Context> BuiltinInfo;
243246

244247
/// Tracks all of the pragmas that the client registered
245248
/// with this preprocessor.
@@ -911,7 +914,7 @@ class Preprocessor {
911914
IdentifierTable &getIdentifierTable() { return Identifiers; }
912915
const IdentifierTable &getIdentifierTable() const { return Identifiers; }
913916
SelectorTable &getSelectorTable() { return Selectors; }
914-
Builtin::Context &getBuiltinInfo() { return BuiltinInfo; }
917+
Builtin::Context &getBuiltinInfo() { return *BuiltinInfo; }
915918
llvm::BumpPtrAllocator &getPreprocessorAllocator() { return BP; }
916919

917920
void setExternalSource(ExternalPreprocessorSource *Source) {

clang/lib/Analysis/ReachableCode.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include "clang/AST/StmtCXX.h"
2020
#include "clang/Analysis/AnalysisDeclContext.h"
2121
#include "clang/Analysis/CFG.h"
22+
#include "clang/Basic/Builtins.h"
2223
#include "clang/Basic/SourceManager.h"
2324
#include "clang/Lex/Preprocessor.h"
2425
#include "llvm/ADT/BitVector.h"

clang/lib/Frontend/ChainedIncludesSource.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//
1212
//===----------------------------------------------------------------------===//
1313

14+
#include "clang/Basic/Builtins.h"
1415
#include "clang/Basic/TargetInfo.h"
1516
#include "clang/Frontend/ASTUnit.h"
1617
#include "clang/Frontend/CompilerInstance.h"

clang/lib/Frontend/FrontendAction.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "clang/AST/ASTConsumer.h"
1111
#include "clang/AST/ASTContext.h"
1212
#include "clang/AST/DeclGroup.h"
13+
#include "clang/Basic/Builtins.h"
1314
#include "clang/Basic/LangStandard.h"
1415
#include "clang/Frontend/ASTUnit.h"
1516
#include "clang/Frontend/CompilerInstance.h"

clang/lib/Lex/PPMacroExpansion.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "clang/Basic/Attributes.h"
15+
#include "clang/Basic/Builtins.h"
1516
#include "clang/Basic/FileManager.h"
1617
#include "clang/Basic/IdentifierTable.h"
1718
#include "clang/Basic/LLVM.h"
@@ -35,9 +36,9 @@
3536
#include "llvm/ADT/FoldingSet.h"
3637
#include "llvm/ADT/None.h"
3738
#include "llvm/ADT/Optional.h"
39+
#include "llvm/ADT/STLExtras.h"
3840
#include "llvm/ADT/SmallString.h"
3941
#include "llvm/ADT/SmallVector.h"
40-
#include "llvm/ADT/STLExtras.h"
4142
#include "llvm/ADT/StringRef.h"
4243
#include "llvm/ADT/StringSwitch.h"
4344
#include "llvm/Support/Casting.h"

clang/lib/Lex/Preprocessor.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
//===----------------------------------------------------------------------===//
2626

2727
#include "clang/Lex/Preprocessor.h"
28+
#include "clang/Basic/Builtins.h"
2829
#include "clang/Basic/FileManager.h"
2930
#include "clang/Basic/FileSystemStatCache.h"
3031
#include "clang/Basic/IdentifierTable.h"
@@ -53,9 +54,9 @@
5354
#include "llvm/ADT/APInt.h"
5455
#include "llvm/ADT/ArrayRef.h"
5556
#include "llvm/ADT/DenseMap.h"
57+
#include "llvm/ADT/STLExtras.h"
5658
#include "llvm/ADT/SmallString.h"
5759
#include "llvm/ADT/SmallVector.h"
58-
#include "llvm/ADT/STLExtras.h"
5960
#include "llvm/ADT/StringRef.h"
6061
#include "llvm/ADT/StringSwitch.h"
6162
#include "llvm/Support/Capacity.h"
@@ -202,7 +203,8 @@ void Preprocessor::Initialize(const TargetInfo &Target,
202203
this->AuxTarget = AuxTarget;
203204

204205
// Initialize information about built-ins.
205-
BuiltinInfo.InitializeTarget(Target, AuxTarget);
206+
BuiltinInfo = std::make_unique<Builtin::Context>();
207+
BuiltinInfo->InitializeTarget(Target, AuxTarget);
206208
HeaderInfo.setTarget(Target);
207209

208210
// Populate the identifier table with info about keywords for the current language.

clang/lib/Sema/SemaCoroutine.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "clang/AST/Decl.h"
1919
#include "clang/AST/ExprCXX.h"
2020
#include "clang/AST/StmtCXX.h"
21+
#include "clang/Basic/Builtins.h"
2122
#include "clang/Lex/Preprocessor.h"
2223
#include "clang/Sema/Initialization.h"
2324
#include "clang/Sema/Overload.h"

clang/lib/Sema/SemaExpr.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
#include "clang/AST/ExprOpenMP.h"
2626
#include "clang/AST/RecursiveASTVisitor.h"
2727
#include "clang/AST/TypeLoc.h"
28+
#include "clang/Basic/Builtins.h"
2829
#include "clang/Basic/FixedPoint.h"
2930
#include "clang/Basic/PartialDiagnostic.h"
3031
#include "clang/Basic/SourceManager.h"

clang/lib/Sema/SemaExprObjC.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,21 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
#include "clang/Sema/SemaInternal.h"
1413
#include "clang/AST/ASTContext.h"
1514
#include "clang/AST/DeclObjC.h"
1615
#include "clang/AST/ExprObjC.h"
1716
#include "clang/AST/StmtVisitor.h"
1817
#include "clang/AST/TypeLoc.h"
1918
#include "clang/Analysis/DomainSpecific/CocoaConventions.h"
19+
#include "clang/Basic/Builtins.h"
2020
#include "clang/Edit/Commit.h"
2121
#include "clang/Edit/Rewriters.h"
2222
#include "clang/Lex/Preprocessor.h"
2323
#include "clang/Sema/Initialization.h"
2424
#include "clang/Sema/Lookup.h"
2525
#include "clang/Sema/Scope.h"
2626
#include "clang/Sema/ScopeInfo.h"
27+
#include "clang/Sema/SemaInternal.h"
2728
#include "llvm/ADT/SmallString.h"
2829
#include "llvm/Support/ConvertUTF.h"
2930

lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "clang/AST/ASTDiagnostic.h"
1111
#include "clang/AST/ExternalASTSource.h"
1212
#include "clang/AST/PrettyPrinter.h"
13+
#include "clang/Basic/Builtins.h"
1314
#include "clang/Basic/DiagnosticIDs.h"
1415
#include "clang/Basic/SourceLocation.h"
1516
#include "clang/Basic/TargetInfo.h"

0 commit comments

Comments
 (0)