diff options
author | David Malcolm <dmalcolm@redhat.com> | 2022-02-01 15:48:26 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2022-02-02 09:54:32 -0500 |
commit | ea3e1915954371d8230fda44ce6821928f04f80e (patch) | |
tree | 63a81403f42418a1415a3df26c8a06697a3af664 /gcc | |
parent | 93e759fc18a1a4208ae2898610c55ebd8c9e25d8 (diff) | |
download | gcc-ea3e1915954371d8230fda44ce6821928f04f80e.zip gcc-ea3e1915954371d8230fda44ce6821928f04f80e.tar.gz gcc-ea3e1915954371d8230fda44ce6821928f04f80e.tar.bz2 |
analyzer: consolidate duplicate code in region::calc_offset
gcc/analyzer/ChangeLog:
* region.cc (region::calc_offset): Consolidate effectively
identical cases.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/analyzer/region.cc | 48 |
1 files changed, 5 insertions, 43 deletions
diff --git a/gcc/analyzer/region.cc b/gcc/analyzer/region.cc index 9d8fdb2..77554b8 100644 --- a/gcc/analyzer/region.cc +++ b/gcc/analyzer/region.cc @@ -499,41 +499,16 @@ region::calc_offset () const switch (iter_region->get_kind ()) { case RK_FIELD: - { - const field_region *field_reg - = (const field_region *)iter_region; - iter_region = iter_region->get_parent_region (); - - bit_offset_t rel_bit_offset; - if (!field_reg->get_relative_concrete_offset (&rel_bit_offset)) - return region_offset::make_symbolic (iter_region); - accum_bit_offset += rel_bit_offset; - } - continue; - case RK_ELEMENT: - { - const element_region *element_reg - = (const element_region *)iter_region; - iter_region = iter_region->get_parent_region (); - - bit_offset_t rel_bit_offset; - if (!element_reg->get_relative_concrete_offset (&rel_bit_offset)) - return region_offset::make_symbolic (iter_region); - accum_bit_offset += rel_bit_offset; - } - continue; - case RK_OFFSET: + case RK_BIT_RANGE: { - const offset_region *offset_reg - = (const offset_region *)iter_region; - iter_region = iter_region->get_parent_region (); - bit_offset_t rel_bit_offset; - if (!offset_reg->get_relative_concrete_offset (&rel_bit_offset)) - return region_offset::make_symbolic (iter_region); + if (!iter_region->get_relative_concrete_offset (&rel_bit_offset)) + return region_offset::make_symbolic + (iter_region->get_parent_region ()); accum_bit_offset += rel_bit_offset; + iter_region = iter_region->get_parent_region (); } continue; @@ -549,19 +524,6 @@ region::calc_offset () const } continue; - case RK_BIT_RANGE: - { - const bit_range_region *bit_range_reg - = (const bit_range_region *)iter_region; - iter_region = iter_region->get_parent_region (); - - bit_offset_t rel_bit_offset; - if (!bit_range_reg->get_relative_concrete_offset (&rel_bit_offset)) - return region_offset::make_symbolic (iter_region); - accum_bit_offset += rel_bit_offset; - } - continue; - default: return region_offset::make_concrete (iter_region, accum_bit_offset); } |