[clang] a77b66a - Allocate builtins table earlier to fix bug found by ubsan

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 18 10:41:37 PST 2019


Author: Reid Kleckner
Date: 2019-11-18T10:41:30-08:00
New Revision: a77b66a05625ea4271c2d76f65428cce02e4699e

URL: https://github.com/llvm/llvm-project/commit/a77b66a05625ea4271c2d76f65428cce02e4699e
DIFF: https://github.com/llvm/llvm-project/commit/a77b66a05625ea4271c2d76f65428cce02e4699e.diff

LOG: Allocate builtins table earlier to fix bug found by ubsan

Follow up to 979da9a4c3ba

Added: 
    

Modified: 
    clang/lib/Lex/Preprocessor.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp
index 496eae980c00..0e9be3923630 100644
--- a/clang/lib/Lex/Preprocessor.cpp
+++ b/clang/lib/Lex/Preprocessor.cpp
@@ -113,6 +113,8 @@ Preprocessor::Preprocessor(std::shared_ptr<PreprocessorOptions> PPOpts,
   // We haven't read anything from the external source.
   ReadMacrosFromExternalSource = false;
 
+  BuiltinInfo = std::make_unique<Builtin::Context>();
+
   // "Poison" __VA_ARGS__, __VA_OPT__ which can only appear in the expansion of
   // a macro. They get unpoisoned where it is allowed.
   (Ident__VA_ARGS__ = getIdentifierInfo("__VA_ARGS__"))->setIsPoisoned();
@@ -203,7 +205,6 @@ void Preprocessor::Initialize(const TargetInfo &Target,
   this->AuxTarget = AuxTarget;
 
   // Initialize information about built-ins.
-  BuiltinInfo = std::make_unique<Builtin::Context>();
   BuiltinInfo->InitializeTarget(Target, AuxTarget);
   HeaderInfo.setTarget(Target);
 


        


More information about the cfe-commits mailing list