[clang] [HLSL] Treat `main` as any other function (PR #110546)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 30 11:06:16 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-hlsl
@llvm/pr-subscribers-clang
Author: Chris B (llvm-beanz)
<details>
<summary>Changes</summary>
HLSL doesn't distinguish `main` from any other function. It does treat entry points special, but they're not required to be called `main` so we have a different attribute annotation to mark them.
At the moment this change really just changes the mangling of functions named `main` in the Itanium mangling.
Fixes #<!-- -->110517
---
Full diff: https://github.com/llvm/llvm-project/pull/110546.diff
3 Files Affected:
- (modified) clang/lib/AST/Decl.cpp (+1)
- (modified) clang/test/CodeGenHLSL/builtins/wave_get_lane_index_do_while.hlsl (+1-1)
- (modified) clang/test/Options/enable_16bit_types_validation_spirv.hlsl (+1-1)
``````````diff
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index a14b1b33d35efc..84ef9f74582ef6 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -3302,6 +3302,7 @@ bool FunctionDecl::isImmediateFunction() const {
bool FunctionDecl::isMain() const {
return isNamed(this, "main") && !getLangOpts().Freestanding &&
+ !getLangOpts().HLSL &&
(getDeclContext()->getRedeclContext()->isTranslationUnit() ||
isExternC());
}
diff --git a/clang/test/CodeGenHLSL/builtins/wave_get_lane_index_do_while.hlsl b/clang/test/CodeGenHLSL/builtins/wave_get_lane_index_do_while.hlsl
index 9481b0d60a2723..c223b9117e9277 100644
--- a/clang/test/CodeGenHLSL/builtins/wave_get_lane_index_do_while.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/wave_get_lane_index_do_while.hlsl
@@ -1,7 +1,7 @@
// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
// RUN: spirv-pc-vulkan-library %s -emit-llvm -disable-llvm-passes -o - | FileCheck %s
-// CHECK: define spir_func void @main() [[A0:#[0-9]+]] {
+// CHECK: define spir_func void @{{.*}}main{{.*}}() [[A0:#[0-9]+]] {
void main() {
// CHECK: entry:
// CHECK: %[[CT_ENTRY:[0-9]+]] = call token @llvm.experimental.convergence.entry()
diff --git a/clang/test/Options/enable_16bit_types_validation_spirv.hlsl b/clang/test/Options/enable_16bit_types_validation_spirv.hlsl
index aeb7a8369f4034..3e6734011c39ad 100644
--- a/clang/test/Options/enable_16bit_types_validation_spirv.hlsl
+++ b/clang/test/Options/enable_16bit_types_validation_spirv.hlsl
@@ -4,7 +4,7 @@
// SPIRV: error: '-fnative-half-type' option requires target HLSL Version >= 2018, but HLSL Version is 'hlsl2016'
// valid: "spirv-unknown-vulkan-library"
-// valid: define spir_func void @main() #0 {
+// valid: define spir_func void @{{.*}}main{{.*}}() #0 {
[numthreads(1,1,1)]
void main()
``````````
</details>
https://github.com/llvm/llvm-project/pull/110546
More information about the cfe-commits
mailing list