summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2020-07-14 14:13:51 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2020-07-26 10:46:37 +0200
commitf84f7e0daa9e091df67e92bb7d7cd45dc5605d0c (patch)
treee419899a06904f9a5a63b66ed86e73dbf72c8664
parente61d9ac835ff45a10fb73adc1713a3fde264ce5f (diff)
downloadvala-f84f7e0daa9e091df67e92bb7d7cd45dc5605d0c.tar.gz
codegen: Inline allocated and constant arrays are never NULL
Found by -Werror=tautological-pointer-compare
-rw-r--r--codegen/valaccodebasemodule.vala8
-rw-r--r--codegen/valaccodememberaccessmodule.vala2
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");