# HG changeset patch # User Christian Kamm # Date 1223238385 -7200 # Node ID c8fcde3337b0778f4d2be2547340aa15e17154c1 # Parent 5709381df7e8aea89784ddccc3969a1e1ab7588a Fix TryFinally without body or finalbody. diff -r 5709381df7e8 -r c8fcde3337b0 gen/statements.cpp --- a/gen/statements.cpp Sun Oct 05 18:55:43 2008 +0200 +++ b/gen/statements.cpp Sun Oct 05 22:26:25 2008 +0200 @@ -511,6 +511,17 @@ if (global.params.symdebug) DtoDwarfStopPoint(loc.linnum); + // if there's no finalbody or no body, things are simple + if (!finalbody) { + if (body) + body->toIR(p); + return; + } + if (!body) { + finalbody->toIR(p); + return; + } + // create basic blocks llvm::BasicBlock* oldend = p->scopeend(); @@ -529,6 +540,7 @@ // p->scope() = IRScope(landingpadbb, endbb); + assert(finalbody); gIR->func()->landingPad.addFinally(finalbody); gIR->func()->landingPad.push(landingpadbb); @@ -550,7 +562,6 @@ // do finally block // p->scope() = IRScope(finallybb,landingpadbb); - assert(finalbody); finalbody->toIR(p); // terminate finally