From 5d3f1bfc48346f671c2b72ad06b3822c64457438 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 29 Jan 2020 23:49:32 -0800 Subject: [PATCH] arch,base,cpu: Add some default constructors/operators explicitly. Having them implicitly is apparently deprecated and throws a warning in gcc 9, breaking the build. Change-Id: Id4e3074966d1ffc6dd1aed9397de5eea84400027 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24926 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/arch/alpha/pagetable.hh | 4 ++++ src/arch/generic/vec_pred_reg.hh | 1 + src/arch/generic/vec_reg.hh | 1 + src/base/bitunion.hh | 14 ++++++++++++++ src/cpu/inst_res.hh | 1 + 5 files changed, 21 insertions(+) diff --git a/src/arch/alpha/pagetable.hh b/src/arch/alpha/pagetable.hh index dc13d3790..e94aa4648 100644 --- a/src/arch/alpha/pagetable.hh +++ b/src/arch/alpha/pagetable.hh @@ -45,6 +45,7 @@ struct VAddr Addr addr; + VAddr(const VAddr &) = default; VAddr(Addr a) : addr(a) {} operator Addr() const { return addr; } const VAddr &operator=(Addr a) { addr = a; return *this; } @@ -63,6 +64,7 @@ struct VAddr struct PageTableEntry { + PageTableEntry(const PageTableEntry &) = default; PageTableEntry(uint64_t e) : entry(e) {} uint64_t entry; operator uint64_t() const { return entry; } @@ -103,6 +105,8 @@ struct TlbEntry : public Serializable bool valid; // valid page table entry + TlbEntry(const TlbEntry &) = default; + //Construct an entry that maps to physical address addr. TlbEntry(Addr _asn, Addr _vaddr, Addr _paddr, bool uncacheable, bool read_only) diff --git a/src/arch/generic/vec_pred_reg.hh b/src/arch/generic/vec_pred_reg.hh index 9ff9915ef..2f51d186b 100644 --- a/src/arch/generic/vec_pred_reg.hh +++ b/src/arch/generic/vec_pred_reg.hh @@ -248,6 +248,7 @@ class VecPredRegContainer public: VecPredRegContainer() {} + VecPredRegContainer(const VecPredRegContainer &) = default; MyClass& operator=(const MyClass& that) diff --git a/src/arch/generic/vec_reg.hh b/src/arch/generic/vec_reg.hh index aab307b42..948fec904 100644 --- a/src/arch/generic/vec_reg.hh +++ b/src/arch/generic/vec_reg.hh @@ -284,6 +284,7 @@ class VecRegContainer public: VecRegContainer() {} + VecRegContainer(const VecRegContainer &) = default; /* This is required for de-serialisation. */ VecRegContainer(const std::vector& that) { diff --git a/src/base/bitunion.hh b/src/base/bitunion.hh index 1a32991a8..1eec1e2a8 100644 --- a/src/base/bitunion.hh +++ b/src/base/bitunion.hh @@ -86,6 +86,9 @@ class BitfieldTypeImpl : public Base Type getter(const Storage &storage) const = delete; void setter(Storage &storage, Type val) = delete; + BitfieldTypeImpl() = default; + BitfieldTypeImpl(const BitfieldTypeImpl &) = default; + Storage __storage; operator Type () const @@ -116,6 +119,9 @@ class BitfieldType : public BitfieldTypeImpl using typename Impl::Type; public: + BitfieldType() = default; + BitfieldType(const BitfieldType &) = default; + operator Type () const { return Impl::operator Type(); } Type operator=(const Type val) { return Impl::operator=(val); } Type @@ -133,6 +139,9 @@ class BitfieldROType : public BitfieldTypeImpl using Impl = BitfieldTypeImpl; using typename Impl::Type; + BitfieldROType() = default; + BitfieldROType(const BitfieldROType &) = default; + Type operator=(BitfieldROType const &other) = delete; operator Type () const { return Impl::operator Type(); } }; @@ -146,6 +155,9 @@ class BitfieldWOType : public BitfieldTypeImpl using typename Impl::Type; public: + BitfieldWOType() = default; + BitfieldWOType(const BitfieldWOType &) = default; + Type operator=(const Type val) { return Impl::operator=(val); } Type operator=(BitfieldWOType const & other) @@ -244,6 +256,8 @@ namespace BitfieldBackend Base::__storage = val; } + BitUnionOperators(const BitUnionOperators &) = default; + BitUnionOperators() {} operator const typename Base::__StorageType () const diff --git a/src/cpu/inst_res.hh b/src/cpu/inst_res.hh index bf9c649ef..d2ac3025e 100644 --- a/src/cpu/inst_res.hh +++ b/src/cpu/inst_res.hh @@ -75,6 +75,7 @@ class InstResult { public: /** Default constructor creates an invalid result. */ InstResult() : type(ResultType::Invalid) { } + InstResult(const InstResult &) = default; /** Scalar result from scalar. */ template explicit InstResult(T i, const ResultType& t) : type(t) { -- 2.30.2