================
@@ -5703,6 +5709,12 @@ void CXXNameMangler::mangleExpression(const Expr *E,
unsigned Arity,
Out << "E";
break;
}
+ case Expr::HLSLOutArgExprClass: {
+ const auto *OAE = cast<clang::HLSLOutArgExpr>(E);
+ Out << (OAE->isInOut() ? "_inout_" : "_out_");
+ mangleType(E->getType());
+ break;
+ }
----------------
rjmccall wrote:
Okay, so this is wrong in every way. :)
Expression mangling generally follows the syntax. Since there is no
argument-side syntax for passing an argument to an `out` or `inout` parameter,
I'd say the correct mangling is just to ignore this node and mangle the
underlying (syntactic) argument expression, which I assume is fairly easy to
find (is that the base expression? whatever doesn't have the OVE still in it).
If it *were* important to mangle this for some reason, you would want to mangle
it as a vendor extended expression, `u <source-name> <template-arg>* E`.
https://github.com/llvm/llvm-project/pull/101083
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits