summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2015-06-21 06:51:35 +0000
committerDavid Blaikie <dblaikie@gmail.com>2015-06-21 06:51:35 +0000
commit1f584934c6253b94f7472f64e79cd80dc4d8eda0 (patch)
tree8859ffb8dcc17c087e3a0358c6f042513d2cdd83
parent6d492ad583b499a1f7977ca0380185ba0f76b0f7 (diff)
downloadbcm5719-llvm-1f584934c6253b94f7472f64e79cd80dc4d8eda0.tar.gz
bcm5719-llvm-1f584934c6253b94f7472f64e79cd80dc4d8eda0.zip
Devirtualize ArgList's dtor now that -Wvirtual-dtor and C++11 allow a better way to describe this situation
llvm-svn: 240238
-rw-r--r--llvm/include/llvm/Option/ArgList.h16
-rw-r--r--llvm/lib/Option/ArgList.cpp5
2 files changed, 7 insertions, 14 deletions
diff --git a/llvm/include/llvm/Option/ArgList.h b/llvm/include/llvm/Option/ArgList.h
index 23b04513178..15d82d6da35 100644
--- a/llvm/include/llvm/Option/ArgList.h
+++ b/llvm/include/llvm/Option/ArgList.h
@@ -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);
diff --git a/llvm/lib/Option/ArgList.cpp b/llvm/lib/Option/ArgList.cpp
index b771a18a106..e29b62f74dc 100644
--- a/llvm/lib/Option/ArgList.cpp
+++ b/llvm/lib/Option/ArgList.cpp
@@ -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);
}
OpenPOWER on IntegriCloud