Endre =?utf-8?q?Fülöp?= <endre.fu...@sigmatechnology.com>, Endre =?utf-8?q?Fülöp?= <endre.fu...@sigmatechnology.com>, Endre =?utf-8?q?Fülöp?= <endre.fu...@sigmatechnology.com>, Endre =?utf-8?q?Fülöp?= <endre.fu...@sigmatechnology.com> Message-ID: In-Reply-To: <llvm.org/llvm/llvm-project/pull/109...@github.com>
================ @@ -0,0 +1,244 @@ +//===--- MutexModelingAPI.h - API for modeling mutexes --------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// Defines inter-checker API for tracking and manipulating the +// modeled state of locked mutexes in the GDM. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_MUTEXMODELINGAPI_H +#define LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_MUTEXMODELINGAPI_H + +#include "MutexModelingDomain.h" +#include "MutexModelingGDM.h" +#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" +#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallSet.h" +#include "llvm/ADT/StringExtras.h" + +namespace clang { + +namespace ento { +class BugType; +namespace mutex_modeling { + +// Set of registered bug types for mutex modeling +inline llvm::SmallSet<const BugType *, 0> RegisteredBugTypes{}; + +// Register a bug type for mutex modeling +inline void RegisterBugTypeForMutexModeling(const BugType *BT) { + RegisteredBugTypes.insert(BT); +} + +// Check if a bug type is registered for mutex modeling +inline bool IsBugTypeRegisteredForMutexModeling(const BugType *BT) { + return RegisteredBugTypes.contains(BT); +} + +// Vector of registered event descriptors +inline llvm::SmallVector<EventDescriptor, 0> RegisteredEvents{}; ---------------- steakhal wrote: I'm really concerned about inline globals. I'd prefer not exposing this in a header. Or at least, only expose an extern declaration, and keep the definition in the cpp file. https://github.com/llvm/llvm-project/pull/109636 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits