aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/program-state.cc
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2024-06-14 13:57:10 +0100
committerJonathan Wakely <jwakely@redhat.com>2024-06-18 13:40:20 +0100
commitd8c8ab7de71218eb6ddbe5822f1acdcd8726323d (patch)
treeab1a47f2a0acfb27791d7f9df444067365676b32 /gcc/analyzer/program-state.cc
parent5f6b42969d598139640e60daf1d0b9bdfcaa9f73 (diff)
downloadgcc-d8c8ab7de71218eb6ddbe5822f1acdcd8726323d.zip
gcc-d8c8ab7de71218eb6ddbe5822f1acdcd8726323d.tar.gz
gcc-d8c8ab7de71218eb6ddbe5822f1acdcd8726323d.tar.bz2
analyzer: Fix g++ 4.8 bootstrap without using std::move to return std::unique_ptr
Revert the changes in r15-1111-ge22b7f741ab54f and fix bootstrap with GCC 4.8 a different way. The original problem is not related to C++17 guaranteed copy elision, it's related to Core DR 1579 [1], which was part of C++14 but only implemented in G++ as a C++11 DR with r5-1576-gfb682f9458c6cf (so GCC 4.8 doesn't implement it). The original fix causes -Wredundant-move warnings with GCC trunk. [1] https://cplusplus.github.io/CWG/issues/1579.html gcc/analyzer/ChangeLog * constraint-manager.cc (equiv_class::make_dump_widget): Change return type to match return value and do not use std::move on return value. (bounded_ranges_constraint::make_dump_widget): Likewise. (constraint_manager::make_dump_widget): Likewise. * constraint-manager.h (equiv_class::make_dump_widget): Change return type. (bounded_ranges_constraint::make_dump_widget): Likewise. (constraint_manager::make_dump_widget): Likewise. * program-state.cc (sm_state_map::make_dump_widget): Likewise. (program_state::make_dump_widget): Likewise. * program-state.h (sm_state_map::make_dump_widget): Likewise. (program_state::make_dump_widget): Likewise. * region-model.cc (region_to_value_map::make_dump_widget): Likewise. (region_model::make_dump_widget): Likewise. * region-model.h (region_to_value_map::make_dump_widget): Likewise. (region_model::make_dump_widget): Likewise. * region.cc (region::make_dump_widget): Likewise. * region.h (region::make_dump_widget): Likewise. * store.cc (binding_cluster::make_dump_widget): Likewise. (store::make_dump_widget): Likewise. * store.h (binding_cluster::make_dump_widget): Likewise. (store::make_dump_widget): Likewise. * svalue.cc (svalue::make_dump_widget): Likewise. * svalue.h (svalue::make_dump_widget): Likewise.
Diffstat (limited to 'gcc/analyzer/program-state.cc')
-rw-r--r--gcc/analyzer/program-state.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/analyzer/program-state.cc b/gcc/analyzer/program-state.cc
index cb9c388..c42fc75 100644
--- a/gcc/analyzer/program-state.cc
+++ b/gcc/analyzer/program-state.cc
@@ -309,7 +309,7 @@ sm_state_map::to_json () const
/* Make a text_art::tree_widget describing this sm_state_map,
using MODEL if non-null to describe svalues. */
-std::unique_ptr<text_art::widget>
+std::unique_ptr<text_art::tree_widget>
sm_state_map::make_dump_widget (const text_art::dump_widget_info &dwi,
const region_model *model) const
{
@@ -382,7 +382,7 @@ sm_state_map::make_dump_widget (const text_art::dump_widget_info &dwi,
state_widget->add_child (tree_widget::make (dwi, pp));
}
- return std::move (state_widget);
+ return state_widget;
}
/* Return true if no states have been set within this map
@@ -1229,7 +1229,7 @@ program_state::to_json (const extrinsic_state &ext_state) const
}
-std::unique_ptr<text_art::widget>
+std::unique_ptr<text_art::tree_widget>
program_state::make_dump_widget (const text_art::dump_widget_info &dwi) const
{
using text_art::tree_widget;
@@ -1247,7 +1247,7 @@ program_state::make_dump_widget (const text_art::dump_widget_info &dwi) const
state_widget->add_child (smap->make_dump_widget (dwi, m_region_model));
}
- return std::move (state_widget);
+ return state_widget;
}
/* Update this program_state to reflect a top-level call to FUN.