aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-08-23 08:43:39 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-08-23 08:43:39 +0000
commitdcb4a1a6dd55fdf6c073d2761096f42e26be105a (patch)
tree88527791e318f55b8fdd7ea842d19bf12df7be40
parente8b470d40c4d44b77c2efab3cb977beb23344ff6 (diff)
Add TargetInfo::useNeXTRuntimeAsDefault
- Used to autoselect runtime when neither -fnext-runtime nor -fgnu-runtime is specified. - Default impl is false, all darwin targets set it to true. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55231 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Driver/clang.cpp8
-rw-r--r--include/clang/Basic/TargetInfo.h6
-rw-r--r--lib/Basic/Targets.cpp7
3 files changed, 15 insertions, 6 deletions
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index c271f51233..419fa980c6 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -387,7 +387,8 @@ NeXTRuntime("fnext-runtime",
// -trigraphs
// -fdollars-in-identifiers
// -fpascal-strings
-static void InitializeLanguageStandard(LangOptions &Options, LangKind LK) {
+static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
+ TargetInfo *Target) {
if (LangStd == lang_unspecified) {
// Based on the base language, pick one.
switch (LK) {
@@ -454,8 +455,7 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK) {
} else if (GNURuntime) {
Options.NeXTRuntime = 0;
} else {
- // FIXME: Should autoselect based on platform.
- Options.NeXTRuntime = 0;
+ Options.NeXTRuntime = Target->useNeXTRuntimeAsDefault();
}
}
@@ -1201,7 +1201,7 @@ int main(int argc, char **argv) {
InitializeBaseLanguage();
LangKind LK = GetLanguage(InFile);
InitializeLangOptions(LangInfo, LK);
- InitializeLanguageStandard(LangInfo, LK);
+ InitializeLanguageStandard(LangInfo, LK, Target.get());
InitializeGCMode(LangInfo);
// Process the -I options and set them in the HeaderInfo.
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index bb687d2660..a8edf47041 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -206,8 +206,10 @@ public:
const char * const Register;
};
- virtual bool useGlobalsForAutomaticVariables() const {return false;}
-
+ virtual bool useGlobalsForAutomaticVariables() const { return false; }
+
+ virtual bool useNeXTRuntimeAsDefault() const { return false; }
+
protected:
virtual void getGCCRegNames(const char * const *&Names,
unsigned &NumNames) const = 0;
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index a04ce362ec..fae0a71d60 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -501,6 +501,8 @@ public:
PPC32TargetInfo::getTargetDefines(Defines);
getDarwinDefines(Defines);
}
+
+ virtual bool useNeXTRuntimeAsDefault() const { return true; }
};
} // end anonymous namespace.
@@ -512,6 +514,8 @@ public:
PPC64TargetInfo::getTargetDefines(Defines);
getDarwinDefines(Defines);
}
+
+ virtual bool useNeXTRuntimeAsDefault() const { return true; }
};
} // end anonymous namespace.
@@ -656,6 +660,7 @@ public:
X86_32TargetInfo::getTargetDefines(Defines);
getDarwinDefines(Defines);
}
+ virtual bool useNeXTRuntimeAsDefault() const { return true; }
};
} // end anonymous namespace
@@ -735,6 +740,8 @@ public:
X86_64TargetInfo::getTargetDefines(Defines);
getDarwinDefines(Defines);
}
+
+ virtual bool useNeXTRuntimeAsDefault() const { return true; }
};
} // end anonymous namespace.