From: Jürg Billeter Date: Wed, 27 Jan 2010 17:44:36 +0000 (+0100) Subject: Do not generate unnecessary error check after throw statement X-Git-Tag: 0.7.10~50 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4fddd11d2de67656cd5db5e18c234d9066f09b2b;p=thirdparty%2Fvala.git Do not generate unnecessary error check after throw statement Fixes bug 589942. --- diff --git a/codegen/valagerrormodule.vala b/codegen/valagerrormodule.vala index a031616cc..ef25c067a 100644 --- a/codegen/valagerrormodule.vala +++ b/codegen/valagerrormodule.vala @@ -283,8 +283,14 @@ internal class Vala.GErrorModule : CCodeDelegateModule { cerror_handler = uncaught_error_statement (inner_error); } - var ccond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, inner_error, new CCodeConstant ("NULL")); - cfrag.append (new CCodeIfStatement (ccond, cerror_handler)); + if (node is ThrowStatement) { + // inner_error is always set, avoid unnecessary if statement + // eliminates C warnings + cfrag.append (cerror_handler); + } else { + var ccond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, inner_error, new CCodeConstant ("NULL")); + cfrag.append (new CCodeIfStatement (ccond, cerror_handler)); + } } public override void visit_try_statement (TryStatement stmt) {