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.
+2018-06-22 Cary Coutant <ccoutant@gmail.com>
+
+ * 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 <ccoutant@gmail.com>
PR gold/22914
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:
Input_reader()
{ }
+ Input_reader(const Input_reader&)
+ { }
+
virtual
~Input_reader()
{ }
: Input_reader(), reader_(r)
{ }
+ Sized_input_reader(const Sized_input_reader& r)
+ : Input_reader(), reader_(r.reader_)
+ { }
+
virtual
~Sized_input_reader()
{ }