[clang] [clang][X86] Support __attribute__((model("small"/"large"))) (PR #124834)
Arthur Eubanks via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 12 14:31:24 PST 2025
================
@@ -2949,15 +2950,34 @@ static void handleSectionAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
}
}
+static bool isValidCodeModelAttr(Sema &S, StringRef Str) {
+ if (S.Context.getTargetInfo().getTriple().isLoongArch()) {
+ return Str == "normal" || Str == "medium" || Str == "extreme";
+ } else {
+ assert(S.Context.getTargetInfo().getTriple().getArch() ==
+ llvm::Triple::x86_64 &&
+ "only loongarch/x86-64 supported");
+ return Str == "small" || Str == "large";
+ }
+}
+
static void handleCodeModelAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
StringRef Str;
SourceLocation LiteralLoc;
// Check that it is a string.
if (!S.checkStringLiteralArgumentAttr(AL, 0, Str, &LiteralLoc))
return;
+ // Ignore the attribute for GPU device compiles since it only applies to host
+ // globals.
+ if (S.Context.getTargetInfo().getTriple().isNVPTX() ||
----------------
aeubanks wrote:
now we warn if both the current target and `getAuxTriple()` don't support the attribute. however, if we're a pure GPU compile with no `getAuxTriple()`, we silently ignore the attribute since we don't know what the host could be. does this work?
https://github.com/llvm/llvm-project/pull/124834
More information about the cfe-commits
mailing list