diff options
| author | Wael Yehia <wmyehia2001@yahoo.com> | 2025-09-19 11:41:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-19 11:41:57 -0400 |
| commit | 74bea4c1ad34c9044b9e02f7f9688a408676df75 (patch) | |
| tree | b2b0cdff36f517a0fb5d82c82d7e89eddb66beeb /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
| parent | 69465ebb22871e5c556ebf22ef4ebbf0a42be3d5 (diff) | |
[IR] enable attaching metadata on ifuncs (#158732)
Teach the IR parser and writer to support metadata on ifuncs, and update
documentation.
In PR #153049, we have a use case of attaching the `!associated`
metadata to an ifunc.
Since an ifunc is similar to a function declaration, it seems natural to
allow metadata on ifuncs.
Currently, the metadata API allows adding Metadata to
llvm::GlobalObject, so the in-memory IR allows for metadata on ifuncs,
but the IR reader/writer is not aware of that.
---------
Co-authored-by: Wael Yehia <wyehia@ca.ibm.com>
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
| -rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index a1d5b36bde64..c4070e1f4468 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -2626,6 +2626,9 @@ void ModuleBitcodeWriter::writeModuleMetadata() { for (const Function &F : M) if (F.isDeclaration() && F.hasMetadata()) AddDeclAttachedMetadata(F); + for (const GlobalIFunc &GI : M.ifuncs()) + if (GI.hasMetadata()) + AddDeclAttachedMetadata(GI); // FIXME: Only store metadata for declarations here, and move data for global // variable definitions to a separate block (PR28134). for (const GlobalVariable &GV : M.globals()) |
