[gcc(refs/users/mikael/heads/refactor_descriptor_v08)] gimple-simulate: propagation valeurs indéfinies
Mikael Morin
mikael@gcc.gnu.org
Wed Sep 17 13:36:04 GMT 2025
https://gcc.gnu.org/g:de5836501f705cdf5312439e70820d1344f65b3c
commit de5836501f705cdf5312439e70820d1344f65b3c
Author: Mikael Morin <mikael@gcc.gnu.org>
Date: Fri Aug 29 11:31:42 2025 +0200
gimple-simulate: propagation valeurs indéfinies
Ajout test
gimple-simulate: Propagation des valeurs indéfinies
Revert partiel
Diff:
---
gcc/gimple-simulate.cc | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/gcc/gimple-simulate.cc b/gcc/gimple-simulate.cc
index 9187efce399c..aeda491db332 100644
--- a/gcc/gimple-simulate.cc
+++ b/gcc/gimple-simulate.cc
@@ -2167,6 +2167,15 @@ simul_scope::evaluate_binary (enum tree_code code, tree type, tree lhs,
else
gcc_unreachable ();
}
+ else if ((lhs_type == VAL_UNDEFINED || rhs_type == VAL_UNDEFINED)
+ && (lhs_type != VAL_ADDRESS
+ && rhs_type != VAL_ADDRESS
+ && lhs_type != VAL_MIXED
+ && rhs_type != VAL_MIXED))
+ {
+ data_value result (type);
+ return result;
+ }
else
gcc_unreachable ();
}
@@ -5797,6 +5806,31 @@ simul_scope_evaluate_binary_tests ()
wide_int wi_rshift6 = rshift_6.get_known ();
ASSERT_PRED1 (wi::fits_shwi_p, wi_rshift6);
ASSERT_EQ (wi_rshift6.to_shwi (), 5);
+
+
+ tree i1_7 = create_var (integer_type_node, "i1");
+ tree i2_7 = create_var (integer_type_node, "i2");
+
+ vec<tree> decls7{};
+ decls7.safe_push (i1_7);
+ decls7.safe_push (i2_7);
+
+ context_builder builder7 {};
+ builder7.add_decls (&decls7);
+ simul_scope ctx7 = builder7.build (mem, printer);
+
+ data_value undef7_1 = ctx7.evaluate_binary (PLUS_EXPR,
+ integer_type_node,
+ i1_7, i2_7);
+
+ ASSERT_EQ (undef7_1.classify (), VAL_UNDEFINED);
+
+ tree cst_i1 = build_one_cst (integer_type_node);
+ data_value undef7_2 = ctx7.evaluate_binary (PLUS_EXPR,
+ integer_type_node,
+ i1_7, cst_i1);
+
+ ASSERT_EQ (undef7_2.classify (), VAL_UNDEFINED);
}
More information about the Gcc-cvs
mailing list