Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -507,19 +507,8 @@ const ArgList &Args, std::vector &Features) { StringRef HWDiv = A->getValue(); - if (HWDiv == "arm") { - Features.push_back("+hwdiv-arm"); - Features.push_back("-hwdiv"); - } else if (HWDiv == "thumb") { - Features.push_back("-hwdiv-arm"); - Features.push_back("+hwdiv"); - } else if (HWDiv == "arm,thumb" || HWDiv == "thumb,arm") { - Features.push_back("+hwdiv-arm"); - Features.push_back("+hwdiv"); - } else if (HWDiv == "none") { - Features.push_back("-hwdiv-arm"); - Features.push_back("-hwdiv"); - } else + unsigned HWDivID = llvm::ARMTargetParser::parseHWDiv(HWDiv); + if (!llvm::ARMTargetParser::getHWDivFeatures(HWDivID, Features)) D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); }