[gcc(refs/users/mikael/heads/refactor_descriptor_v08)] gimple-simulate: sauvegarde
Mikael Morin
mikael@gcc.gnu.org
Fri Sep 19 19:13:01 GMT 2025
https://gcc.gnu.org/g:6e7727b9834e9b172417adffebd20ee8f749506e
commit 6e7727b9834e9b172417adffebd20ee8f749506e
Author: Mikael Morin <mikael@gcc.gnu.org>
Date: Fri Aug 29 20:52:19 2025 +0200
gimple-simulate: sauvegarde
Diff:
---
gcc/gimple-simulate.cc | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/gcc/gimple-simulate.cc b/gcc/gimple-simulate.cc
index 9333c64aa77d..3bdfd2bf6f7d 100644
--- a/gcc/gimple-simulate.cc
+++ b/gcc/gimple-simulate.cc
@@ -807,6 +807,8 @@ static tree
pick_subref_at (tree var_ref, unsigned offset, int * ignored_bits,
unsigned min_size)
{
+ if (ignored_bits != nullptr)
+ *ignored_bits = 0;
tree ref = var_ref;
unsigned remaining_offset = offset;
while (true)
@@ -953,8 +955,20 @@ find_mem_ref_replacement (tree * repl, unsigned * offset, simul_scope & context,
remaining_offset += wi_idx * CHAR_BIT;
}
- *repl = var_ref;
- *offset = remaining_offset.to_shwi ();
+ int ignored_bits;
+ tree t = pick_subref_at (var_ref, remaining_offset.to_shwi (),
+ &ignored_bits,
+ get_constant_type_size (access_type));
+ if (t == NULL_TREE)
+ {
+ *repl = var_ref;
+ *offset = remaining_offset.to_shwi ();
+ }
+ else
+ {
+ *repl = t;
+ *offset = ignored_bits;
+ }
return true;
}
}
More information about the Gcc-cvs
mailing list