llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-codegen @llvm/pr-subscribers-clang Author: Romaric Jodin (rjodinchr) <details> <summary>Changes</summary> Instead add a proper attribute in clang, and add convert it to function metadata to keep the information in the IR. The goal is to remove the dependency on __attribute__((assume)) that should have not be there in the first place. Ref https://github.com/llvm/llvm-project/pull/84934 --- Full diff: https://github.com/llvm/llvm-project/pull/92126.diff 3 Files Affected: - (modified) clang/include/clang/Basic/Attr.td (+6) - (modified) clang/lib/CodeGen/CodeGenFunction.cpp (+5) - (modified) libclc/generic/include/clc/clcfunc.h (+1-1) ``````````diff diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index 52552ba488560..0970110ee581d 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -4561,3 +4561,9 @@ def CodeAlign: StmtAttr { static constexpr int MaximumAlignment = 4096; }]; } + +def ClspvLibclcBuiltin: DeclOrStmtAttr { + let Spellings = [Clang<"clspv_libclc_builtin">]; + let Documentation = [Undocumented]; + let SimpleHandler = 1; +} diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index 9f16fcb438557..4c4f368ddeba1 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -979,6 +979,11 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, QualType RetTy, EmitKernelMetadata(FD, Fn); } + if (FD && FD->hasAttr<ClspvLibclcBuiltinAttr>()) { + Fn->setMetadata("clspv_libclc_builtin", + llvm::MDNode::get(getLLVMContext(), {})); + } + // If we are checking function types, emit a function type signature as // prologue data. if (FD && SanOpts.has(SanitizerKind::Function)) { diff --git a/libclc/generic/include/clc/clcfunc.h b/libclc/generic/include/clc/clcfunc.h index ad9eb23f29333..59f45c27019d6 100644 --- a/libclc/generic/include/clc/clcfunc.h +++ b/libclc/generic/include/clc/clcfunc.h @@ -8,7 +8,7 @@ #define _CLC_DEF #elif defined(CLC_CLSPV) || defined(CLC_CLSPV64) #define _CLC_DEF \ - __attribute__((noinline)) __attribute__((assume("clspv_libclc_builtin"))) + __attribute__((noinline)) __attribute__((clspv_libclc_builtin)) #else #define _CLC_DEF __attribute__((always_inline)) #endif `````````` </details> https://github.com/llvm/llvm-project/pull/92126 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits