[clang] [llvm] [PowerPC][AIX] Support #pragma comment copyright for AIX (PR #178184)
Hubert Tong via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 22 19:08:12 PDT 2026
================
@@ -3572,6 +3574,47 @@ void CodeGenModule::AddDependentLib(StringRef Lib) {
LinkerOptionsMetadata.push_back(llvm::MDNode::get(C, MDOpts));
}
+/// Process copyright pragma and create LLVM metadata.
+/// #pragma comment(copyright, "string") embeds copyright information into a
+/// loadable program-data section of the object file for inclusion in the linked
+/// module.
+///
+/// Example: #pragma comment(copyright, "Copyright string")
+///
+/// Only one copyright pragma is allowed per translation unit. Subsequent
+/// pragmas in the same TU are ignored with a warning at the parse level.
+void CodeGenModule::ProcessPragmaComment(PragmaMSCommentKind Kind,
+ StringRef Comment,
+ bool isFromASTFile) {
+ // Ensure we are only processing Copyright Pragmas
+ assert(Kind == PCK_Copyright &&
+ "Unexpected pragma comment kind, ProcessPragmaComment should only be "
+ "called for PCK_Copyright");
+ // Target Guard: Only AIX supports PCK_Copyright currently.
+ assert(getTriple().isOSAIX() &&
+ "pragma comment copyright is supported only when targeting AIX");
+
+ // Interaction with C++20 Modules and PCH:
+ // When a module interface unit containing a copyright pragma is imported,
+ // Clang deserializes the PragmaCommentDecl from the precompiled module file
+ // (.pcm) into the importing TU's AST. isFromASTFile() returns true for such
+ // deserialized declarations. We skip those to ensure only the module
+ // interface TU that originally parsed the pragma emits the copyright metadata
+ // -- not every TU that imports it. This prevents duplicate copyright strings
+ // in the final binary.
+ if (isFromASTFile)
+ return;
+
+ // Only one copyright pragma allowed per translation unit
+ assert(!LoadTimeComment &&
+ "Only one copyright pragma allowed per translation unit");
----------------
hubert-reinterpretcast wrote:
Please do not use a chimera style between English prose and error message formatting (https://llvm.org/docs/CodingStandards.html#error-and-warning-messages).
```suggestion
"Only one copyright pragma allowed per translation unit.");
```
https://github.com/llvm/llvm-project/pull/178184
More information about the llvm-commits
mailing list