diff options
author | Chris Lattner <sabre@nondot.org> | 2009-03-02 22:11:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-03-02 22:11:07 +0000 |
commit | 16167a6e3f7dfb7ed0babc5e0baab9fd140e959d (patch) | |
tree | 98a8a0d295af643afa683d4f721b1da4c542b217 /Driver/clang.cpp | |
parent | 32ce8376efb7e0d70e5f7e8fcf685130293f412b (diff) |
start wiring up support for target-specific -mfoo options like -msse
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65881 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Driver/clang.cpp')
-rw-r--r-- | Driver/clang.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Driver/clang.cpp b/Driver/clang.cpp index f402a20c01..54e93f8031 100644 --- a/Driver/clang.cpp +++ b/Driver/clang.cpp @@ -517,6 +517,12 @@ Trigraphs("trigraphs", llvm::cl::desc("Process trigraph sequences.")); static llvm::cl::opt<bool> Ansi("ansi", llvm::cl::desc("Equivalent to specifying -std=c89.")); + +static llvm::cl::list<std::string> +TargetOptions("m", llvm::cl::Prefix, llvm::cl::value_desc("option"), + llvm::cl::desc("Target-specific options, such as -msse3")); + + // FIXME: add: // -fdollars-in-identifiers static void InitializeLanguageStandard(LangOptions &Options, LangKind LK, @@ -524,6 +530,23 @@ static void InitializeLanguageStandard(LangOptions &Options, LangKind LK, // Allow the target to set the default the langauge options as it sees fit. Target->getDefaultLangOptions(Options); + // If the user specified any -mfoo options, pass them to the target for + // validation and processing. + if (!TargetOptions.empty()) { + std::string ErrorStr; + int Opt = Target->HandleTargetOptions(&TargetOptions[0], + TargetOptions.size(), ErrorStr); + if (Opt != -1) { + if (ErrorStr.empty()) + fprintf(stderr, "invalid command line option '%s'\n", + TargetOptions[Opt].c_str()); + else + fprintf(stderr, "command line option '%s': %s\n", + TargetOptions[Opt].c_str(), ErrorStr.c_str()); + exit(1); + } + } + if (Ansi) // "The -ansi option is equivalent to -std=c89." LangStd = lang_c89; |