================
@@ -5817,7 +5817,10 @@ LValue CodeGenFunction::EmitHLSLArrayAssignLValue(const 
BinaryOperator *E) {
 
 LValue CodeGenFunction::EmitCallExprLValue(const CallExpr *E,
                                            llvm::CallBase **CallOrInvoke) {
-  RValue RV = EmitCallExpr(E, ReturnValueSlot(), CallOrInvoke);
----------------
ilya-biryukov wrote:

Would it be better to wrap a more generic function? I'm thinking about 
`EmitLValue`

```cpp
LValue CodeGenFunction::EmitLValue(const Expr *E) {
  LValue R;
  R = runWithSufficientStackSpace([] { R = EmitLValueImpl(E); }, ...);
  return R;
}

// The current function...
LValue CodeGenFunction::EmitLValueImpl(const Expr *E) {
  ApplyDebugLocation DL(*this, E);
  switch (E->getStmtClass()) {
  ...
}
```

That way we can cover a broader class of recursive expressions. I'm not sure 
the coverage is complete,
but should probably be quite good for a start.
(We could also add a few tests for deep expressions that don't involve calls).

https://github.com/llvm/llvm-project/pull/111701
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to