[clang] [clang][bytecode] Fix crash in void functions returning non-void expr… (PR #176550)
Timm Baeder via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 19 21:18:35 PST 2026
================
@@ -5678,11 +5678,10 @@ bool Compiler<Emitter>::visitReturnStmt(const ReturnStmt *RS) {
return this->emitRet(*ReturnType, RS);
}
- if (RE->getType()->isVoidType()) {
- if (!this->visit(RE))
+ if (RE->containsErrors() || RE->getType()->isVoidType()) {
+ if (!this->discard(RE))
return false;
} else {
- InitLinkScope<Emitter> ILS(this, InitLink::RVO());
// RVO - construct the value in the return location.
----------------
tbaederr wrote:
Why are ou
1) Not moving the `containsErrors()` check in the else block of the `if (RE->getType()->isVoidType()` as suggested?
2) Replacing the `visit()` with a `discard()`?
3) Removing the `InitLinkScope`?
https://github.com/llvm/llvm-project/pull/176550
More information about the cfe-commits
mailing list