From f84f7e0daa9e091df67e92bb7d7cd45dc5605d0c Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Tue, 14 Jul 2020 14:13:51 +0200 Subject: codegen: Inline allocated and constant arrays are never NULL Found by -Werror=tautological-pointer-compare --- codegen/valaccodebasemodule.vala | 8 ++++++-- codegen/valaccodememberaccessmodule.vala | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 0628807fd..32e6b6a03 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -4628,8 +4628,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 7f0f6f6c8..9c561e45f 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -157,6 +157,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; @@ -724,6 +725,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"); -- cgit v1.2.1