Path: blob/main/lang/cling/files/patch-llvm_clang_lib_Lex_Pragma.cpp
16461 views
--- llvm/clang/lib/Lex/Pragma.cpp.orig 2025-02-07 08:51:59 UTC1+++ llvm/clang/lib/Lex/Pragma.cpp2@@ -934,9 +934,11 @@ void Preprocessor::AddPragmaHandler(StringRef Namespac3}45// Check to make sure we don't already have a pragma for this identifier.6- assert(!InsertNS->FindHandler(Handler->getName()) &&7- "Pragma handler already exists for this identifier!");8- InsertNS->AddPragma(Handler);9+ // assert(!InsertNS->FindHandler(Handler->getName()) &&10+ // "Pragma handler already exists for this identifier!");11+12+ if (!InsertNS->FindHandler(Handler->getName()))13+ InsertNS->AddPragma(Handler);14}1516/// RemovePragmaHandler - Remove the specific pragma handler from the17@@ -950,12 +952,15 @@ void Preprocessor::RemovePragmaHandler(StringRef Names18// If this is specified to be in a namespace, step down into it.19if (!Namespace.empty()) {20PragmaHandler *Existing = PragmaHandlers->FindHandler(Namespace);21+ if (!Existing)22+ return;23assert(Existing && "Namespace containing handler does not exist!");2425NS = Existing->getIfNamespace();26assert(NS && "Invalid namespace, registered as a regular pragma handler!");27}2829+ if (NS->FindHandler(Handler->getName()))30NS->RemovePragmaHandler(Handler);3132// If this is a non-default namespace and it is now empty, remove it.333435