From: Rico Tzschichholz Date: Tue, 14 Jul 2020 12:13:51 +0000 (+0200) Subject: codegen: Inline allocated and constant arrays are never NULL X-Git-Tag: 0.49.1~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46d5fb8ffcf35f84b8b3a71f954fcc514d00752b;p=thirdparty%2Fvala.git codegen: Inline allocated and constant arrays are never NULL Found by -Werror=tautological-pointer-compare --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 5d70d5b49..26ddcb7b8 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -4706,8 +4706,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { ccode.add_expression (ccall); ccode.close (); } else { - var ccond = new CCodeConditionalExpression (cnotnull, ccall, cifnull); - result.cvalue = ccond; + if (get_non_null (value)) { + result.cvalue = ccall; + } else { + var ccond = new CCodeConditionalExpression (cnotnull, ccall, cifnull); + result.cvalue = ccond; + } result = (GLibValue) store_temp_value (result, node, true); } return result; diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index 32e7cf54f..1cec90ac6 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -180,6 +180,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { append_array_length (expr, ccall); sub += "[0]"; } + ((GLibValue) expr.target_value).non_null = true; } } else if (expr.symbol_reference is Property) { var prop = (Property) expr.symbol_reference; @@ -768,6 +769,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { result.lvalue = false; } result.array_size_cvalue = null; + result.non_null = array_type.inline_allocated; } else if (delegate_type != null) { if (!get_ccode_delegate_target (variable)) { result.delegate_target_cvalue = new CCodeConstant ("NULL");