diff options
author | Andrey Turetskiy <andrey.turetskiy@gmail.com> | 2016-06-20 10:31:39 +0000 |
---|---|---|
committer | Andrey Turetskiy <andrey.turetskiy@gmail.com> | 2016-06-20 10:31:39 +0000 |
commit | e8e1ffef117aaad63139603b29d34a847f9c6208 (patch) | |
tree | 1d3d8ae96504c0d126af621d2a51ab3b4d0e7db3 /clang/lib/Driver/Driver.cpp | |
parent | d03f97211a75db6e02f587b3d3b51dfe1411a277 (diff) | |
download | bcm5719-llvm-e8e1ffef117aaad63139603b29d34a847f9c6208.tar.gz bcm5719-llvm-e8e1ffef117aaad63139603b29d34a847f9c6208.zip |
[X86] Add -mno-iamcu option.
Add -mno-iamcu option to:
1) Countervail -miamcu option easily
2) Be compatible with GCC which supports this option
Differential Revision: http://reviews.llvm.org/D21469
llvm-svn: 273147
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 96971e91ae6..d8c83742495 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -280,8 +280,9 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const { } // Enforce -static if -miamcu is present. - if (Args.hasArg(options::OPT_miamcu)) - DAL->AddFlagArg(0, Opts->getOption(options::OPT_static)); + if (Arg *Ar = Args.getLastArg(options::OPT_miamcu, options::OPT_mno_iamcu)) + if (Ar->getOption().matches(options::OPT_miamcu)) + DAL->AddFlagArg(0, Opts->getOption(options::OPT_static)); // Add a default value of -mlinker-version=, if one was given and the user // didn't specify one. @@ -375,22 +376,24 @@ static llvm::Triple computeTargetTriple(const Driver &D, } // Handle -miamcu flag. - if (Args.hasArg(options::OPT_miamcu)) { - if (Target.get32BitArchVariant().getArch() != llvm::Triple::x86) - D.Diag(diag::err_drv_unsupported_opt_for_target) << "-miamcu" - << Target.str(); - - if (A && !A->getOption().matches(options::OPT_m32)) - D.Diag(diag::err_drv_argument_not_allowed_with) - << "-miamcu" << A->getBaseArg().getAsString(Args); - - Target.setArch(llvm::Triple::x86); - Target.setArchName("i586"); - Target.setEnvironment(llvm::Triple::UnknownEnvironment); - Target.setEnvironmentName(""); - Target.setOS(llvm::Triple::ELFIAMCU); - Target.setVendor(llvm::Triple::UnknownVendor); - Target.setVendorName("intel"); + if (Arg *Ar = Args.getLastArg(options::OPT_miamcu, options::OPT_mno_iamcu)) { + if (Ar->getOption().matches(options::OPT_miamcu)) { + if (Target.get32BitArchVariant().getArch() != llvm::Triple::x86) + D.Diag(diag::err_drv_unsupported_opt_for_target) << "-miamcu" + << Target.str(); + + if (A && !A->getOption().matches(options::OPT_m32)) + D.Diag(diag::err_drv_argument_not_allowed_with) + << "-miamcu" << A->getBaseArg().getAsString(Args); + + Target.setArch(llvm::Triple::x86); + Target.setArchName("i586"); + Target.setEnvironment(llvm::Triple::UnknownEnvironment); + Target.setEnvironmentName(""); + Target.setOS(llvm::Triple::ELFIAMCU); + Target.setVendor(llvm::Triple::UnknownVendor); + Target.setVendorName("intel"); + } } return Target; |