aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Basic/Targets.cpp7
-rw-r--r--include/clang/Basic/TargetInfo.h15
2 files changed, 14 insertions, 8 deletions
diff --git a/Basic/Targets.cpp b/Basic/Targets.cpp
index f77bef185a..d87e386fa9 100644
--- a/Basic/Targets.cpp
+++ b/Basic/Targets.cpp
@@ -826,3 +826,10 @@ TargetInfo* TargetInfo::CreateTargetInfo(const std::string* TriplesStart,
return TI;
}
+
+TargetInfo::~TargetInfo() {
+ delete PrimaryTarget;
+ for (unsigned i = 0; i < SecondaryTargets.size(); ++i)
+ delete SecondaryTargets[i];
+}
+
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 6d4147c353..0550e51e82 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -38,9 +38,6 @@ namespace Builtin { struct Info; }
/// target, it will warn the first time the size of the 'long' datatype is
/// queried.
///
-/// Note that TargetInfo does not take ownership of the various targets or the
-/// diagnostic info, but does expect them to be alive for as long as it is.
-///
class TargetInfo {
/// Primary - This tracks the primary target in the target set.
///
@@ -75,6 +72,11 @@ class TargetInfo {
WCharWidth = 0;
}
+ /// AddSecondaryTarget - Add a secondary target to the target set.
+ void AddSecondaryTarget(const TargetInfoImpl *Secondary) {
+ SecondaryTargets.push_back(Secondary);
+ }
+
public:
/// CreateTargetInfo - Create a TargetInfo object from a group of
/// target triples. The first target triple is considered the primary
@@ -83,6 +85,8 @@ public:
const std::string* TripledEnd,
Diagnostic* Diags = NULL);
+ ~TargetInfo();
+
//==----------------------------------------------------------------==/
// Accessors.
//==----------------------------------------------------------------==/
@@ -99,11 +103,6 @@ public:
return !NonPortable;
}
- /// AddSecondaryTarget - Add a secondary target to the target set.
- void AddSecondaryTarget(const TargetInfoImpl *Secondary) {
- SecondaryTargets.push_back(Secondary);
- }
-
///===---- Target property query methods --------------------------------===//
/// DiagnoseNonPortability - Emit a diagnostic indicating that the current