diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 5a07b1ac545..41134725921 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -7303,15 +7303,20 @@ void gnutools::Assemble::ConstructJob(Compilation &C, const JobAction &JA,    case llvm::Triple::armeb:    case llvm::Triple::thumb:    case llvm::Triple::thumbeb: { -    StringRef MArch = getToolChain().getArchName(); -    if (MArch == "armv7" || MArch == "armv7a" || MArch == "armv7-a") +    const llvm::Triple &Triple = getToolChain().getTriple(); +    switch (Triple.getSubArch()) { +    case llvm::Triple::ARMSubArch_v7:        CmdArgs.push_back("-mfpu=neon"); -    if (MArch == "armv8" || MArch == "armv8a" || MArch == "armv8-a" || -        MArch == "armebv8" || MArch == "armebv8a" || MArch == "armebv8-a") +      break; +    case llvm::Triple::ARMSubArch_v8:        CmdArgs.push_back("-mfpu=crypto-neon-fp-armv8"); +      break; +    default: +      break; +    }      StringRef ARMFloatABI = tools::arm::getARMFloatABI( -        getToolChain().getDriver(), Args, getToolChain().getTriple()); +        getToolChain().getDriver(), Args, Triple);      CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=" + ARMFloatABI));      Args.AddLastArg(CmdArgs, options::OPT_march_EQ);  | 

