[llvm] [IR] Avoid UB in `SymbolTableListTraits` (PR #139096)

via llvm-commits llvm-commits at lists.llvm.org
Sun May 11 00:25:36 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h -- llvm/include/llvm/IR/BasicBlock.h llvm/include/llvm/IR/Function.h llvm/include/llvm/IR/Module.h llvm/include/llvm/IR/SymbolTableListTraits.h
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/include/llvm/IR/Function.h b/llvm/include/llvm/IR/Function.h
index d7768515b..63100568d 100644
--- a/llvm/include/llvm/IR/Function.h
+++ b/llvm/include/llvm/IR/Function.h
@@ -811,7 +811,7 @@ private:
     return &Function::BasicBlocks;
   }
 
-  static size_t getSublistOffset(BasicBlock*) {
+  static size_t getSublistOffset(BasicBlock *) {
     return offsetof(Function, BasicBlocks);
   }
 
diff --git a/llvm/include/llvm/IR/Module.h b/llvm/include/llvm/IR/Module.h
index 42937c2a2..f93186d2e 100644
--- a/llvm/include/llvm/IR/Module.h
+++ b/llvm/include/llvm/IR/Module.h
@@ -610,7 +610,7 @@ private:
   static GlobalListType Module::*getSublistAccess(GlobalVariable*) {
     return &Module::GlobalList;
   }
-  static size_t getSublistOffset(GlobalVariable*) {
+  static size_t getSublistOffset(GlobalVariable *) {
     return offsetof(Module, GlobalList);
   }
   friend class llvm::SymbolTableListTraits<llvm::GlobalVariable>;
@@ -623,7 +623,7 @@ public:
   static FunctionListType Module::*getSublistAccess(Function*) {
     return &Module::FunctionList;
   }
-  static size_t getSublistOffset(Function*) {
+  static size_t getSublistOffset(Function *) {
     return offsetof(Module, FunctionList);
   }
 
@@ -665,7 +665,7 @@ private: // Please use functions like insertAlias(), removeAlias() etc.
   static AliasListType Module::*getSublistAccess(GlobalAlias*) {
     return &Module::AliasList;
   }
-  static size_t getSublistOffset(GlobalAlias*) {
+  static size_t getSublistOffset(GlobalAlias *) {
     return offsetof(Module, AliasList);
   }
   friend class llvm::SymbolTableListTraits<llvm::GlobalAlias>;
@@ -678,7 +678,7 @@ private: // Please use functions like insertAlias(), removeAlias() etc.
   static IFuncListType Module::*getSublistAccess(GlobalIFunc*) {
     return &Module::IFuncList;
   }
-  static size_t getSublistOffset(GlobalIFunc*) {
+  static size_t getSublistOffset(GlobalIFunc *) {
     return offsetof(Module, IFuncList);
   }
   friend class llvm::SymbolTableListTraits<llvm::GlobalIFunc>;
diff --git a/llvm/include/llvm/IR/SymbolTableListTraits.h b/llvm/include/llvm/IR/SymbolTableListTraits.h
index e36acfa7b..456833fff 100644
--- a/llvm/include/llvm/IR/SymbolTableListTraits.h
+++ b/llvm/include/llvm/IR/SymbolTableListTraits.h
@@ -77,7 +77,8 @@ private:
   /// getListOwner - Return the object that owns this list.  If this is a list
   /// of instructions, it returns the BasicBlock that owns them.
   ItemParentClass *getListOwner() {
-    size_t Offset = ItemParentClass::getSublistOffset(static_cast<ValueSubClass *>(nullptr));
+    size_t Offset = ItemParentClass::getSublistOffset(
+        static_cast<ValueSubClass *>(nullptr));
     ListTy *Anchor = static_cast<ListTy *>(this);
     return reinterpret_cast<ItemParentClass*>(reinterpret_cast<char*>(Anchor)-
                                               Offset);

``````````

</details>


https://github.com/llvm/llvm-project/pull/139096


More information about the llvm-commits mailing list