https://gcc.gnu.org/g:76639591dd8d30bfce66a5c2cb32510506677ace
commit 76639591dd8d30bfce66a5c2cb32510506677ace Author: Mikael Morin <mik...@gcc.gnu.org> Date: Tue Mar 4 22:32:21 2025 +0100 Changement type retour get_address: data_storage -> storage_address Diff: --- gcc/cgraphunit.cc | 91 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/gcc/cgraphunit.cc b/gcc/cgraphunit.cc index 5290f7f27cfd..c5907e55055e 100644 --- a/gcc/cgraphunit.cc +++ b/gcc/cgraphunit.cc @@ -2485,8 +2485,8 @@ public: void set_cst (const wide_int & val); wide_int get_cst_at (unsigned offset, unsigned width) const; wide_int get_cst () const; - data_storage *get_address () const; - data_storage *get_address_at (unsigned offset) const; + storage_address *get_address () const; + storage_address *get_address_at (unsigned offset) const; data_value get_at (unsigned offset, unsigned width) const; bool is_fully_defined () const { return (~(constant_mask | address_mask)) == 0; } tree to_tree (tree type) const; @@ -2869,13 +2869,13 @@ find_mem_ref_replacement (exec_context & context, tree data_ref, unsigned offset if (ptr_val.classify () != VAL_ADDRESS) return NULL_TREE; - data_storage *ptr_target = ptr_val.get_address (); - gcc_assert (ptr_target != nullptr); - if (ptr_target->get_type () != STRG_VARIABLE) + storage_address *ptr_address = ptr_val.get_address (); + data_storage &ptr_target = ptr_address->storage.get (); + if (ptr_target.get_type () != STRG_VARIABLE) return NULL_TREE; tree access_type = TREE_TYPE (data_ref); - tree var_ref = ptr_target->get_variable (); + tree var_ref = ptr_target.get_variable (); tree var_type = TREE_TYPE (var_ref); if (var_type == access_type) @@ -3315,7 +3315,7 @@ data_value::get_cst () const return get_cst_at (0, bit_width); } -data_storage * +storage_address * data_value::get_address_at (unsigned offset) const { gcc_assert (classify (offset, HOST_BITS_PER_PTR) == VAL_ADDRESS); @@ -3324,13 +3324,13 @@ data_value::get_address_at (unsigned offset) const stored_address *addr_info = find_address (offset); if (addr_info != nullptr) - return &(addr_info->address.storage.get ()); + return &(addr_info->address); return nullptr; } -data_storage * +storage_address * data_value::get_address () const { gcc_assert (bit_width == HOST_BITS_PER_PTR); @@ -3351,9 +3351,7 @@ data_value::get_at (unsigned offset, unsigned width) const case VAL_ADDRESS: { gcc_assert (width == HOST_BITS_PER_PTR); - data_storage *storage = get_address_at (offset); - storage_address address (storage->get_ref (), 0); - result.set_address (address); + result.set_address (*get_address_at (offset)); } break; @@ -3419,9 +3417,9 @@ context_printer::print_at (const data_value & value, tree type, unsigned offset, { gcc_assert (width == HOST_BITS_PER_PTR); pp_ampersand (&pp); - data_storage *target_storage = value.get_address_at (offset); - gcc_assert (target_storage != nullptr); - target_storage->print (*this); + storage_address *address = value.get_address_at (offset); + data_storage &target_storage = address->storage.get (); + target_storage.print (*this); } break; @@ -3674,9 +3672,9 @@ exec_context::evaluate (tree expr) const tree ptr = TREE_OPERAND (expr, 0); data_value val_ptr = evaluate (ptr); gcc_assert (val_ptr.classify () == VAL_ADDRESS); - data_storage *storage = val_ptr.get_address (); - gcc_assert (storage != nullptr); - data_value storage_value = storage->get_value (); + storage_address *address = val_ptr.get_address (); + gcc_assert (address != nullptr); + data_value storage_value = address->storage.get ().get_value (); tree offset_bytes = TREE_OPERAND (expr, 1); data_value val_off = evaluate (offset_bytes); @@ -3927,7 +3925,7 @@ exec_context::decompose_ref (tree data_ref, data_storage * & storage, int & offs tree var = TREE_OPERAND (data_ref, 0); data_value addr = evaluate (var); gcc_assert (addr.classify () == VAL_ADDRESS); - storage = addr.get_address (); + storage = &(addr.get_address ()->storage.get ()); tree off = TREE_OPERAND (data_ref, 1); data_value off_val = evaluate (off); @@ -4835,14 +4833,14 @@ data_value_set_address_tests () val1.set_address (address_a); ASSERT_EQ (val1.classify (), VAL_ADDRESS); - ASSERT_EQ (val1.get_address (), storage_a); + ASSERT_EQ (&val1.get_address ()->storage.get (), storage_a); data_storage *storage_b = ctx.find_reachable_var (b); storage_address address_b (storage_b->get_ref (), 0); val1.set_address (address_b); ASSERT_EQ (val1.classify (), VAL_ADDRESS); - ASSERT_EQ (val1.get_address (), storage_b); + ASSERT_EQ (&val1.get_address ()->storage.get (), storage_b); exec_context ctx2 = context_builder ().build (ctx, printer); @@ -4880,7 +4878,7 @@ data_value_set_tests () val2.set (val1); ASSERT_EQ (val2.classify (), VAL_ADDRESS); - ASSERT_EQ (val2.get_address (), storage_a); + ASSERT_EQ (&val2.get_address ()->storage.get (), storage_a); } void @@ -4916,21 +4914,21 @@ data_value_set_at_tests () val2.set_at (val1, HOST_BITS_PER_PTR); ASSERT_EQ (val2.classify (HOST_BITS_PER_PTR, HOST_BITS_PER_PTR), VAL_ADDRESS); - ASSERT_EQ (val2.get_address_at (HOST_BITS_PER_PTR), storage_a); + ASSERT_EQ (&val2.get_address_at (HOST_BITS_PER_PTR)->storage.get (), storage_a); val1.set_address (address_b); val2.set_at (val1, 0); ASSERT_EQ (val2.classify (0, HOST_BITS_PER_PTR), VAL_ADDRESS); - ASSERT_EQ (val2.get_address_at (0), storage_b); + ASSERT_EQ (&val2.get_address_at (0)->storage.get (), storage_b); data_value val3(vec2ptr); val3.set_at (val2, 0); ASSERT_EQ (val3.classify (0, HOST_BITS_PER_PTR), VAL_ADDRESS); - ASSERT_EQ (val3.get_address_at (0), storage_b); + ASSERT_EQ (&val3.get_address_at (0)->storage.get (), storage_b); ASSERT_EQ (val3.classify (HOST_BITS_PER_PTR, HOST_BITS_PER_PTR), VAL_ADDRESS); - ASSERT_EQ (val3.get_address_at (HOST_BITS_PER_PTR), storage_a); + ASSERT_EQ (&val3.get_address_at (HOST_BITS_PER_PTR)->storage.get (), storage_a); tree derived = make_node (RECORD_TYPE); tree field2 = build_decl (input_location, FIELD_DECL, @@ -5063,10 +5061,11 @@ data_value_set_at_tests () ASSERT_EQ (wi_i1.to_shwi (), 4); ASSERT_EQ (mv2.classify (HOST_BITS_PER_LONG, HOST_BITS_PER_PTR), VAL_ADDRESS); - data_storage *storage2 = mv2.get_address_at (HOST_BITS_PER_LONG); - gcc_assert (storage2 != nullptr); - ASSERT_EQ (storage2->get_type (), STRG_VARIABLE); - ASSERT_EQ (storage2->get_variable (), t); + storage_address *address2 = mv2.get_address_at (HOST_BITS_PER_LONG); + gcc_assert (address2 != nullptr); + data_storage &storage2 = address2->storage.get (); + ASSERT_EQ (storage2.get_type (), STRG_VARIABLE); + ASSERT_EQ (storage2.get_variable (), t); ASSERT_EQ (mv2.classify (HOST_BITS_PER_LONG + HOST_BITS_PER_PTR, HOST_BITS_PER_INT), @@ -5740,16 +5739,18 @@ exec_context_evaluate_tests () tree var_addr = build1 (ADDR_EXPR, int_ptr, a); data_value val = ctx.evaluate (var_addr); - data_storage *strg_ptr = val.get_address (); - ASSERT_NE (strg_ptr, nullptr); - ASSERT_PRED1 (strg_ptr->matches, a); + storage_address *ptr_addr = val.get_address (); + ASSERT_NE (ptr_addr, nullptr); + data_storage &strg_ptr = ptr_addr->storage.get (); + ASSERT_PRED1 (strg_ptr.matches, a); exec_context ctx2 = context_builder ().build (ctx, printer); data_value val2 = ctx2.evaluate (var_addr); - data_storage *strg_ptr2 = val2.get_address (); - ASSERT_NE (strg_ptr, nullptr); - ASSERT_PRED1 (strg_ptr2->matches, a); + storage_address *ptr2_addr = val2.get_address (); + ASSERT_NE (ptr2_addr, nullptr); + data_storage &strg_ptr2 = ptr2_addr->storage.get (); + ASSERT_PRED1 (strg_ptr2.matches, a); data_storage *strg_a = ctx.find_reachable_var (a); @@ -6142,12 +6143,14 @@ exec_context_evaluate_constructor_tests () tree cstr = build_constructor (vec2ptr, vec_elts); data_value val_cstr = ctx.evaluate (cstr); - data_storage *strg1 = val_cstr.get_address_at (0); - ASSERT_NE (strg1, nullptr); - ASSERT_PRED1 (strg1->matches, a); - data_storage *strg2 = val_cstr.get_address_at (HOST_BITS_PER_PTR); - ASSERT_NE (strg2, nullptr); - ASSERT_PRED1 (strg2->matches, b); + storage_address *addr1_bis = val_cstr.get_address_at (0); + ASSERT_NE (addr1_bis, nullptr); + data_storage &strg1 = addr1_bis->storage.get (); + ASSERT_PRED1 (strg1.matches, a); + storage_address *addr2_bis = val_cstr.get_address_at (HOST_BITS_PER_PTR); + ASSERT_NE (addr2_bis, nullptr); + data_storage &strg2 = addr2_bis->storage.get (); + ASSERT_PRED1 (strg2.matches, b); } void @@ -6717,7 +6720,7 @@ exec_context_execute_call_tests () ASSERT_NE (p_strg, nullptr); data_value p_val = p_strg->get_value (); ASSERT_EQ (p_val.classify (), VAL_ADDRESS); - ASSERT_EQ (p_val.get_address (), alloc_strg); + ASSERT_EQ (&p_val.get_address ()->storage.get (), alloc_strg); tree cst2 = build_int_cst (size_type_node, 10); @@ -6865,7 +6868,7 @@ exec_context_execute_call_tests () ASSERT_NE (p_strg5, nullptr); data_value p_val5 = p_strg5->get_value (); ASSERT_EQ (p_val5.classify (), VAL_ADDRESS); - ASSERT_EQ (p_val5.get_address (), alloc_strg5); + ASSERT_EQ (&p_val5.get_address ()->storage.get (), alloc_strg5); } void