From: Jürg Billeter Date: Wed, 16 Sep 2009 12:15:29 +0000 (+0200) Subject: Do not declare result variable if it is unused X-Git-Tag: 0.7.6~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4cdf4417a4422182f5336a3c181e7940fdedc341;p=thirdparty%2Fvala.git Do not declare result variable if it is unused --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 9f5611dda..5063d38c1 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1517,9 +1517,12 @@ internal class Vala.CCodeBaseModule : CCodeModule { } if (acc.readable && !returns_real_struct) { - var cdecl = new CCodeDeclaration (acc.value_type.get_cname ()); - cdecl.add_declarator (new CCodeVariableDeclarator ("result")); - function.block.prepend_statement (cdecl); + // do not declare result variable if exit block is known to be unreachable + if (acc.exit_block == null || acc.exit_block.get_predecessors ().size > 0) { + var cdecl = new CCodeDeclaration (acc.value_type.get_cname ()); + cdecl.add_declarator (new CCodeVariableDeclarator ("result")); + function.block.prepend_statement (cdecl); + } } if (current_method_inner_error) { diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index 3125e749f..2eb974b7b 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -492,9 +492,12 @@ internal class Vala.CCodeMethodModule : CCodeStructModule { } if (!(m.return_type is VoidType) && !m.return_type.is_real_struct_type () && !m.coroutine) { - var cdecl = new CCodeDeclaration (m.return_type.get_cname ()); - cdecl.add_declarator (new CCodeVariableDeclarator ("result")); - cinit.append (cdecl); + // do not declare result variable if exit block is known to be unreachable + if (m.exit_block == null || m.exit_block.get_predecessors ().size > 0) { + var cdecl = new CCodeDeclaration (m.return_type.get_cname ()); + cdecl.add_declarator (new CCodeVariableDeclarator ("result")); + cinit.append (cdecl); + } } if (inner_error) {