mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Devirtualize ArgList's dtor now that -Wvirtual-dtor and C++11 allow a better way to describe this situation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240238 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fa6a5de95b
commit
caca524562
@ -14,6 +14,7 @@
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/Option/Arg.h"
|
||||
#include "llvm/Option/OptSpecifier.h"
|
||||
#include "llvm/Option/Option.h"
|
||||
#include <list>
|
||||
@ -23,7 +24,6 @@
|
||||
|
||||
namespace llvm {
|
||||
namespace opt {
|
||||
class Arg;
|
||||
class ArgList;
|
||||
class Option;
|
||||
|
||||
@ -110,10 +110,9 @@ private:
|
||||
protected:
|
||||
// Default ctor provided explicitly as it is not provided implicitly due to
|
||||
// the presence of the (deleted) copy ctor above.
|
||||
ArgList() { }
|
||||
// Virtual to provide a vtable anchor and because -Wnon-virtua-dtor warns, not
|
||||
// because this type is ever actually destroyed polymorphically.
|
||||
virtual ~ArgList();
|
||||
ArgList() = default;
|
||||
// Protect the dtor to ensure this type is never destroyed polymorphically.
|
||||
~ArgList() = default;
|
||||
|
||||
public:
|
||||
|
||||
@ -299,7 +298,7 @@ public:
|
||||
/// @}
|
||||
};
|
||||
|
||||
class InputArgList : public ArgList {
|
||||
class InputArgList final : public ArgList {
|
||||
private:
|
||||
/// List of argument strings used by the contained Args.
|
||||
///
|
||||
@ -320,7 +319,7 @@ private:
|
||||
|
||||
public:
|
||||
InputArgList(const char* const *ArgBegin, const char* const *ArgEnd);
|
||||
~InputArgList() override;
|
||||
~InputArgList();
|
||||
|
||||
const char *getArgString(unsigned Index) const override {
|
||||
return ArgStrings[Index];
|
||||
@ -346,7 +345,7 @@ public:
|
||||
|
||||
/// DerivedArgList - An ordered collection of driver arguments,
|
||||
/// whose storage may be in another argument list.
|
||||
class DerivedArgList : public ArgList {
|
||||
class DerivedArgList final : public ArgList {
|
||||
const InputArgList &BaseArgs;
|
||||
|
||||
/// The list of arguments we synthesized.
|
||||
@ -355,7 +354,6 @@ class DerivedArgList : public ArgList {
|
||||
public:
|
||||
/// Construct a new derived arg list from \p BaseArgs.
|
||||
DerivedArgList(const InputArgList &BaseArgs);
|
||||
~DerivedArgList() override;
|
||||
|
||||
const char *getArgString(unsigned Index) const override {
|
||||
return BaseArgs.getArgString(Index);
|
||||
|
@ -33,9 +33,6 @@ void arg_iterator::SkipToNextArg() {
|
||||
}
|
||||
}
|
||||
|
||||
ArgList::~ArgList() {
|
||||
}
|
||||
|
||||
void ArgList::append(Arg *A) {
|
||||
Args.push_back(A);
|
||||
}
|
||||
@ -358,8 +355,6 @@ const char *InputArgList::MakeArgStringRef(StringRef Str) const {
|
||||
DerivedArgList::DerivedArgList(const InputArgList &BaseArgs)
|
||||
: BaseArgs(BaseArgs) {}
|
||||
|
||||
DerivedArgList::~DerivedArgList() {}
|
||||
|
||||
const char *DerivedArgList::MakeArgStringRef(StringRef Str) const {
|
||||
return BaseArgs.MakeArgString(Str);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user