aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-12-04 22:54:33 +0000
committerChris Lattner <sabre@nondot.org>2008-12-04 22:54:33 +0000
commit8fc4dfb30e8bd94ca2ea7adb6cbece04fb96cd99 (patch)
tree863f9eab479214595bfe5b10415dc199806d67b7
parent0e50b6e7c104d00614baa3d80df62f1630a94d9c (diff)
replace useNeXTRuntimeAsDefault with a generic hook that allows targets
to specify their default language options. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60561 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--Driver/clang.cpp12
-rw-r--r--include/clang/Basic/TargetInfo.h6
-rw-r--r--lib/Basic/Targets.cpp29
3 files changed, 36 insertions, 11 deletions
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index 2870c3dec0..bb838ed846 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -497,6 +497,8 @@ Ansi("ansi", llvm::cl::desc("Equivalent to specifying -std=c89."));
// -fpascal-strings
static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
TargetInfo *Target) {
+ // Allow the target to set the default the langauge options as it sees fit.
+ Target->getDefaultLangOptions(Options);
if (Ansi) // "The -ansi option is equivalent to -std=c89."
LangStd = lang_c89;
@@ -574,13 +576,11 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK,
Options.LaxVectorConversions = LaxVectorConversions;
Options.Exceptions = Exceptions;
- if (NeXTRuntime) {
+ // Override the default runtime if the user requested it.
+ if (NeXTRuntime)
Options.NeXTRuntime = 1;
- } else if (GNURuntime) {
+ else if (GNURuntime)
Options.NeXTRuntime = 0;
- } else {
- Options.NeXTRuntime = Target->useNeXTRuntimeAsDefault();
- }
}
static llvm::cl::opt<bool>
@@ -1524,8 +1524,8 @@ int main(int argc, char **argv) {
InitializeBaseLanguage();
LangKind LK = GetLanguage(InFile);
bool PCH = InitializeLangOptions(LangInfo, LK);
- InitializeLanguageStandard(LangInfo, LK, Target.get());
InitializeGCMode(LangInfo);
+ InitializeLanguageStandard(LangInfo, LK, Target.get());
// Process the -I options and set them in the HeaderInfo.
HeaderSearch HeaderInfo(FileMgr);
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h
index 32c87434d9..a9a71367bc 100644
--- a/include/clang/Basic/TargetInfo.h
+++ b/include/clang/Basic/TargetInfo.h
@@ -24,6 +24,7 @@ namespace clang {
class Diagnostic;
class SourceManager;
+class LangOptions;
namespace Builtin { struct Info; }
@@ -228,7 +229,10 @@ public:
virtual bool useGlobalsForAutomaticVariables() const { return false; }
- virtual bool useNeXTRuntimeAsDefault() const { return false; }
+ /// getDefaultLangOptions - Allow the target to specify default settings for
+ /// various language options. These may be overridden by command line
+ /// options.
+ virtual void getDefaultLangOptions(LangOptions &Opts) {}
protected:
virtual uint64_t getPointerWidthV(unsigned AddrSpace) const {
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 71321f19cc..6f563a55c3 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -15,6 +15,7 @@
#include "clang/AST/Builtins.h"
#include "clang/AST/TargetBuiltins.h"
#include "clang/Basic/TargetInfo.h"
+#include "clang/Basic/LangOptions.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/APFloat.h"
using namespace clang;
@@ -366,7 +367,12 @@ public:
getDarwinDefines(Defines, getTargetTriple());
}
- virtual bool useNeXTRuntimeAsDefault() const { return true; }
+ /// getDefaultLangOptions - Allow the target to specify default settings for
+ /// various language options. These may be overridden by command line
+ /// options.
+ virtual void getDefaultLangOptions(LangOptions &Opts) {
+ Opts.NeXTRuntime = true;
+ }
};
} // end anonymous namespace.
@@ -379,7 +385,12 @@ public:
getDarwinDefines(Defines, getTargetTriple());
}
- virtual bool useNeXTRuntimeAsDefault() const { return true; }
+ /// getDefaultLangOptions - Allow the target to specify default settings for
+ /// various language options. These may be overridden by command line
+ /// options.
+ virtual void getDefaultLangOptions(LangOptions &Opts) {
+ Opts.NeXTRuntime = true;
+ }
};
} // end anonymous namespace.
@@ -526,7 +537,12 @@ public:
X86_32TargetInfo::getTargetDefines(Defines);
getDarwinDefines(Defines, getTargetTriple());
}
- virtual bool useNeXTRuntimeAsDefault() const { return true; }
+ /// getDefaultLangOptions - Allow the target to specify default settings for
+ /// various language options. These may be overridden by command line
+ /// options.
+ virtual void getDefaultLangOptions(LangOptions &Opts) {
+ Opts.NeXTRuntime = true;
+ }
};
} // end anonymous namespace
@@ -670,7 +686,12 @@ public:
getDarwinDefines(Defines, getTargetTriple());
}
- virtual bool useNeXTRuntimeAsDefault() const { return true; }
+ /// getDefaultLangOptions - Allow the target to specify default settings for
+ /// various language options. These may be overridden by command line
+ /// options.
+ virtual void getDefaultLangOptions(LangOptions &Opts) {
+ Opts.NeXTRuntime = true;
+ }
};
} // end anonymous namespace.