[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