diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2024-06-14 13:57:10 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2024-06-18 13:40:20 +0100 |
commit | d8c8ab7de71218eb6ddbe5822f1acdcd8726323d (patch) | |
tree | ab1a47f2a0acfb27791d7f9df444067365676b32 /gcc/analyzer/region-model.cc | |
parent | 5f6b42969d598139640e60daf1d0b9bdfcaa9f73 (diff) | |
download | gcc-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/region-model.cc')
-rw-r--r-- | gcc/analyzer/region-model.cc | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc index 7969055..4d6e16c 100644 --- a/gcc/analyzer/region-model.cc +++ b/gcc/analyzer/region-model.cc @@ -258,7 +258,7 @@ region_to_value_map::to_json () const return map_obj; } -std::unique_ptr<text_art::widget> +std::unique_ptr<text_art::tree_widget> region_to_value_map:: make_dump_widget (const text_art::dump_widget_info &dwi) const { @@ -288,7 +288,7 @@ make_dump_widget (const text_art::dump_widget_info &dwi) const sval->dump_to_pp (pp, true); w->add_child (text_art::tree_widget::make (dwi, pp)); } - return std::move (w); + return w; } /* Attempt to merge THIS with OTHER, writing the result @@ -532,7 +532,7 @@ region_model::to_json () const return model_obj; } -std::unique_ptr<text_art::widget> +std::unique_ptr<text_art::tree_widget> region_model::make_dump_widget (const text_art::dump_widget_info &dwi) const { using text_art::tree_widget; @@ -556,7 +556,7 @@ region_model::make_dump_widget (const text_art::dump_widget_info &dwi) const m_mgr->get_store_manager ())); model_widget->add_child (m_constraints->make_dump_widget (dwi)); model_widget->add_child (m_dynamic_extents.make_dump_widget (dwi)); - return std::move (model_widget); + return model_widget; } /* Assert that this object is valid. */ |