From 0e54278c5a2ce2ad73743d4b054e35930b0d8368 Mon Sep 17 00:00:00 2001 From: Alexey Prokhin Date: Sat, 21 Apr 2012 16:54:38 +0400 Subject: [PATCH] Implicitly cast return expression to inferenced return type of a literal function. The commit fixes a segfault when compiling a code similar to: float delegate() d = { return 1.0; }; --- dmd2/statement.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dmd2/statement.c b/dmd2/statement.c index 07310de1..66a32704 100644 --- a/dmd2/statement.c +++ b/dmd2/statement.c @@ -3859,7 +3859,11 @@ Statement *ReturnStatement::semantic(Scope *sc) //printf("m1 = %d, m2 = %d\n", m1, m2); if (m1 && m2) + #if IN_LLVM + exp = exp->implicitCastTo(sc, tret); + #else ; + #endif else if (!m1 && m2) tf->next = exp->type; else if (m1 && !m2)