aaron.ballman added inline comments.
================ Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:11579-11584 +def err_hlsl_pointers_unsupported : Error<"%select{pointers|references}0 are " + "unsupported in HLSL">; + +def err_hlsl_operator_unsupported : Error<"the %select{address of (&)|" + "dereference (*)|arrow (->)}0 " + "operator is unsupported in HLSL">; ---------------- Should we be adding `.*` and `->*` to the list of unsupported operators? (Hmmm, or can we never get to those operators because we can't form the base expression anyway?) ================ Comment at: clang/lib/Sema/SemaExpr.cpp:15252-15257 + if (getLangOpts().HLSL) { + if (Opc == UO_AddrOf) + return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 0); + if (Opc == UO_Deref) + return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 1); + } ---------------- How should this interplay with overloaded operators on user-defined types? Is that case allowed so long as it doesn't form a pointer or a reference? (We should add test coverage for that.) ================ Comment at: clang/lib/Sema/SemaExprMember.cpp:1739-1740 + if (getLangOpts().HLSL && IsArrow) + return ExprError(Diag(OpLoc, diag::err_hlsl_operator_unsupported) << 2); + ---------------- Same question here for overloaded operators. ================ Comment at: clang/test/SemaHLSL/prohibit_reference.hlsl:4 +int& bark(int); // expected-error {{references are unsupported in HLSL}} +void meow(int&); // expected-error {{references are unsupported in HLSL}} + ---------------- void chirp(int &&); // error Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D123167/new/ https://reviews.llvm.org/D123167 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits