aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2022-02-01 15:48:26 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2022-02-02 09:54:32 -0500
commitea3e1915954371d8230fda44ce6821928f04f80e (patch)
tree63a81403f42418a1415a3df26c8a06697a3af664
parent93e759fc18a1a4208ae2898610c55ebd8c9e25d8 (diff)
downloadgcc-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>
-rw-r--r--gcc/analyzer/region.cc48
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);
}