[vala/0.40] codegen: Inline allocated and constant arrays are never NULL



commit d7a3bb2106944d699237387e649de95c1a6aef59
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Tue Jul 14 14:13:51 2020 +0200

    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 8bb9863ed..72a059c8c 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -4561,8 +4561,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 e3802fa4b..4bc19baf7 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;
@@ -735,6 +736,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 (!delegate_type.delegate_symbol.has_target || !get_ccode_delegate_target 
(variable)) {
                                result.delegate_target_cvalue = new CCodeConstant ("NULL");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]