Skip to content

Commit

Permalink
Use ArgList::hasFlag to check if -miamcu/-mno-iamcu is passed. NFC.
Browse files Browse the repository at this point in the history
Differential Revision: http://reviews.llvm.org/D21641

llvm-svn: 274119
  • Loading branch information
aturetsk committed Jun 29, 2016
1 parent 94f3a73 commit 5fea71c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 27 deletions.
39 changes: 18 additions & 21 deletions clang/lib/Driver/Driver.cpp
Expand Up @@ -280,9 +280,8 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const {
}

// Enforce -static if -miamcu is present.
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));
if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false))
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.
Expand Down Expand Up @@ -376,24 +375,22 @@ static llvm::Triple computeTargetTriple(const Driver &D,
}

// Handle -miamcu flag.
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");
}
if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false)) {
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;
Expand Down
10 changes: 4 additions & 6 deletions clang/lib/Driver/Tools.cpp
Expand Up @@ -2247,12 +2247,10 @@ void Clang::AddX86TargetArgs(const ArgList &Args,
}

// Set flags to support MCU ABI.
if (Arg *A = Args.getLastArg(options::OPT_miamcu, options::OPT_mno_iamcu)) {
if (A->getOption().matches(options::OPT_miamcu)) {
CmdArgs.push_back("-mfloat-abi");
CmdArgs.push_back("soft");
CmdArgs.push_back("-mstack-alignment=4");
}
if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false)) {
CmdArgs.push_back("-mfloat-abi");
CmdArgs.push_back("soft");
CmdArgs.push_back("-mstack-alignment=4");
}
}

Expand Down

0 comments on commit 5fea71c

Please sign in to comment.