diff --git a/gen/llvmhelpers.cpp b/gen/llvmhelpers.cpp index 43bf8513..7bb8c899 100644 --- a/gen/llvmhelpers.cpp +++ b/gen/llvmhelpers.cpp @@ -1332,6 +1332,10 @@ LLValue* DtoRawVarDeclaration(VarDeclaration* var) // we don't handle aliases either assert(!var->aliassym); + + // if this already has storage, it must've been handled already + if (var->ir.irLocal && var->ir.irLocal->value) + return var->ir.irLocal->value; // referenced by nested function? #if DMDV2 diff --git a/tests/mini/compile_rawvardeclinfinally.d b/tests/mini/compile_rawvardeclinfinally.d new file mode 100644 index 00000000..7d248002 --- /dev/null +++ b/tests/mini/compile_rawvardeclinfinally.d @@ -0,0 +1 @@ +void foo() { void delegate()[] bar; try {} finally { foreach (dg; bar) dg(); } }