Mercurial > projects > ldc
changeset 79:875617f89c51 trunk
[svn r83] Fixed: Returning a struct from within the try block of a try-finally was broken.
author | lindquist |
---|---|
date | Wed, 31 Oct 2007 22:20:19 +0100 |
parents | 2332006e1fa4 |
children | 7299ff502248 |
files | gen/statements.c test/bug44.d |
diffstat | 2 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gen/statements.c Wed Oct 31 20:50:21 2007 +0100 +++ b/gen/statements.c Wed Oct 31 22:20:19 2007 +0100 @@ -96,7 +96,7 @@ if (fin.empty()) new llvm::ReturnInst(p->scopebb()); else { - new llvm::BranchInst(fin.back().bb); + new llvm::BranchInst(fin.back().bb, p->scopebb()); fin.back().ret = true; } delete e;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/bug44.d Wed Oct 31 22:20:19 2007 +0100 @@ -0,0 +1,21 @@ +module bug44; + +pragma(LLVM_internal, "notypeinfo") +struct rgb +{ + long l; +} + +void foo() +{ +} + +rgb test() { + scope(exit) foo(); + return rgb(); +} + +void main() +{ + rgb r = test(); +}