================ @@ -6001,8 +6001,18 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, for (auto it = EHStack.find(CurrentCleanupScopeDepth); it != EHStack.end(); ++it) { EHCleanupScope *Cleanup = dyn_cast<EHCleanupScope>(&*it); - if (!(Cleanup && Cleanup->getCleanup()->isRedundantBeforeReturn())) + // Fake uses can be safely emitted immediately prior to the tail call; we + // choose to emit the fake use before the call rather than after, to avoid + // forcing variable values from every call on the "stack" to be preserved + // simultaneously. ---------------- rjmccall wrote:
The second half of this comment is odd. There isn't really a choice about this; the fake uses must be emitted prior to the tail call because there cannot be anything after it. https://github.com/llvm/llvm-project/pull/136867 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits