[clang] 767b15f - [HLSL] Change clang Driver Options to not set CXXOperatorNames (#126758)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 12 06:21:44 PST 2025
Author: Farzon Lotfi
Date: 2025-02-12T09:21:39-05:00
New Revision: 767b15f9d57cf31fd6ba2aed8c17a8c30d5b5e6e
URL: https://github.com/llvm/llvm-project/commit/767b15f9d57cf31fd6ba2aed8c17a8c30d5b5e6e
DIFF: https://github.com/llvm/llvm-project/commit/767b15f9d57cf31fd6ba2aed8c17a8c30d5b5e6e.diff
LOG: [HLSL] Change clang Driver Options to not set CXXOperatorNames (#126758)
- Disable `CXXOperatorNames` for HLSL
- Add tests to confirm we can use the alt names as functions
Added:
clang/test/SemaHLSL/use-cxx-alt-operator-names.hlsl
Modified:
clang/include/clang/Driver/Options.td
Removed:
################################################################################
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 1cf62ab466134..618815db28434 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -3397,7 +3397,7 @@ def fno_objc_weak : Flag<["-"], "fno-objc-weak">, Group<f_Group>,
def fno_omit_frame_pointer : Flag<["-"], "fno-omit-frame-pointer">, Group<f_Group>,
Visibility<[ClangOption, FlangOption]>;
defm operator_names : BoolFOption<"operator-names",
- LangOpts<"CXXOperatorNames">, Default<cplusplus.KeyPath>,
+ LangOpts<"CXXOperatorNames">, Default<!strconcat(cplusplus.KeyPath, " && !",hlsl.KeyPath)>,
NegFlag<SetFalse, [], [ClangOption, CC1Option],
"Do not treat C++ operator name keywords as synonyms for operators">,
PosFlag<SetTrue>>;
diff --git a/clang/test/SemaHLSL/use-cxx-alt-operator-names.hlsl b/clang/test/SemaHLSL/use-cxx-alt-operator-names.hlsl
new file mode 100644
index 0000000000000..e93be2bbf4e69
--- /dev/null
+++ b/clang/test/SemaHLSL/use-cxx-alt-operator-names.hlsl
@@ -0,0 +1,34 @@
+// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library %s -ast-dump | FileCheck %s
+
+// CHECK: -FunctionDecl {{.*}} and 'void ()'
+void and() {}
+
+// CHECK: -FunctionDecl {{.*}} and_eq 'void ()'
+void and_eq() {}
+
+// CHECK: -FunctionDecl {{.*}} bitand 'void ()'
+void bitand() {}
+
+// CHECK: -FunctionDecl {{.*}} bitor 'void ()'
+void bitor() {}
+
+// CHECK: -FunctionDecl {{.*}} compl 'void ()'
+void compl() {}
+
+// CHECK: -FunctionDecl {{.*}} not 'void ()'
+void not() {}
+
+// CHECK: -FunctionDecl {{.*}} not_eq 'void ()'
+void not_eq() {}
+
+// CHECK: -FunctionDecl {{.*}} or 'void ()'
+void or() {}
+
+// CHECK: -FunctionDecl {{.*}} or_eq 'void ()'
+void or_eq() {}
+
+// CHECK: -FunctionDecl {{.*}} xor 'void ()'
+void xor() {}
+
+// CHECK: -FunctionDecl {{.*}} xor_eq 'void ()'
+void xor_eq() {}
More information about the cfe-commits
mailing list