[clang] [clang][X86] Support __attribute__((model("small"/"large"))) (PR #124834)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 5 12:48:25 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() ||
----------------
erichkeane wrote:
Its not just NVIDIA. Intel does it, and IIRC, the OMP offload supports arbitrary host compilers as well. Either way, we should be diagnosing "not supported" as early as we know anyway, which means during 'device' compilation (if it is first).
https://github.com/llvm/llvm-project/pull/124834
More information about the cfe-commits
mailing list