From a1893a821c4a2e953d13b97360b85650f2127134 Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Fri, 22 Jun 2018 18:19:51 -0700 Subject: [PATCH] Silence GCC 9 error about deprecated implicit copy constructor. Replacing push_back() with emplace_back() eliminates the calls to the copy constructor, but I still had to provide explicit copy constructors because of the call to vector::reserve(), which tries to instantiate them even though they'll never actually be called when reserve() is called on an empty vector. gold/ * incremental.cc (Sized_incremental_binary::setup_readers): Use emplace_back for GCC 5 and later. * incremental.h (Incremental_binary::Input_reader): Provide copy constructor. (Sized_incremental_binary::Sized_input_reader): Likewise. --- gold/ChangeLog | 8 ++++++++ gold/incremental.cc | 4 ++++ gold/incremental.h | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/gold/ChangeLog b/gold/ChangeLog index 623eb593f26..10105137bdb 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2018-06-22 Cary Coutant + + * incremental.cc (Sized_incremental_binary::setup_readers): Use + emplace_back for GCC 5 and later. + * incremental.h (Incremental_binary::Input_reader): Provide copy + constructor. + (Sized_incremental_binary::Sized_input_reader): Likewise. + 2018-06-22 Cary Coutant PR gold/22914 diff --git a/gold/incremental.cc b/gold/incremental.cc index 21f060c945b..7558d14ff50 100644 --- a/gold/incremental.cc +++ b/gold/incremental.cc @@ -311,7 +311,11 @@ Sized_incremental_binary::setup_readers() for (unsigned int i = 0; i < count; i++) { Input_entry_reader input_file = inputs.input_file(i); +#if defined(__GNUC__) && __GNUC__ < 5 this->input_entry_readers_.push_back(Sized_input_reader(input_file)); +#else + this->input_entry_readers_.emplace_back(input_file); +#endif switch (input_file.type()) { case INCREMENTAL_INPUT_OBJECT: diff --git a/gold/incremental.h b/gold/incremental.h index 1c3fbe1147f..b4694b33d07 100644 --- a/gold/incremental.h +++ b/gold/incremental.h @@ -1368,6 +1368,9 @@ class Incremental_binary Input_reader() { } + Input_reader(const Input_reader&) + { } + virtual ~Input_reader() { } @@ -1708,6 +1711,10 @@ class Sized_incremental_binary : public Incremental_binary : Input_reader(), reader_(r) { } + Sized_input_reader(const Sized_input_reader& r) + : Input_reader(), reader_(r.reader_) + { } + virtual ~Sized_input_reader() { } -- 2.30.2