serge-sans-paille created this revision. serge-sans-paille added a reviewer: aaron.ballman. Herald added a project: All. serge-sans-paille requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Warn when meeting an unknown vendor / os / environment Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D139188 Files: clang/include/clang/Basic/DiagnosticCommonKinds.td clang/lib/Basic/Targets.cpp Index: clang/lib/Basic/Targets.cpp =================================================================== --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -691,6 +691,25 @@ } // namespace targets } // namespace clang + +static +void CheckTriple(DiagnosticsEngine &Diags, llvm::Triple const& Triple) +{ + auto IsUnrecognizedValue = [](StringRef Value) { + return !Value.empty() && Value != "unknown" && Value != "none"; + }; + + if (Triple.getVendor() == llvm::Triple::UnknownVendor && + IsUnrecognizedValue(Triple.getVendorName())) + Diags.Report(diag::warn_target_unknown_triple_components) << "vendor" << Triple.getVendorName(); + if (Triple.getOS() == llvm::Triple::UnknownOS && + IsUnrecognizedValue(Triple.getOSName())) + Diags.Report(diag::warn_target_unknown_triple_components) << "os" << Triple.getOSName(); + if (Triple.getEnvironment() == llvm::Triple::UnknownEnvironment && + IsUnrecognizedValue(Triple.getEnvironmentName())) + Diags.Report(diag::warn_target_unknown_triple_components) << "environment" << Triple.getEnvironmentName(); +} + using namespace clang::targets; /// CreateTargetInfo - Return the target info object for the specified target /// options. @@ -707,6 +726,9 @@ } Target->TargetOpts = Opts; + // Check after we created the target has it only raises warnings. + CheckTriple(Diags, Triple); + // Set the target CPU if specified. if (!Opts->CPU.empty() && !Target->setCPU(Opts->CPU)) { Diags.Report(diag::err_target_unknown_cpu) << Opts->CPU; Index: clang/include/clang/Basic/DiagnosticCommonKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticCommonKinds.td +++ clang/include/clang/Basic/DiagnosticCommonKinds.td @@ -297,6 +297,8 @@ // Targets +def warn_target_unknown_triple_components : Warning< + "unknown triple %0 '%1'">; def err_target_unknown_triple : Error< "unknown target triple '%0', please use -triple or -arch">; def err_target_unknown_cpu : Error<"unknown target CPU '%0'">;
Index: clang/lib/Basic/Targets.cpp =================================================================== --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -691,6 +691,25 @@ } // namespace targets } // namespace clang + +static +void CheckTriple(DiagnosticsEngine &Diags, llvm::Triple const& Triple) +{ + auto IsUnrecognizedValue = [](StringRef Value) { + return !Value.empty() && Value != "unknown" && Value != "none"; + }; + + if (Triple.getVendor() == llvm::Triple::UnknownVendor && + IsUnrecognizedValue(Triple.getVendorName())) + Diags.Report(diag::warn_target_unknown_triple_components) << "vendor" << Triple.getVendorName(); + if (Triple.getOS() == llvm::Triple::UnknownOS && + IsUnrecognizedValue(Triple.getOSName())) + Diags.Report(diag::warn_target_unknown_triple_components) << "os" << Triple.getOSName(); + if (Triple.getEnvironment() == llvm::Triple::UnknownEnvironment && + IsUnrecognizedValue(Triple.getEnvironmentName())) + Diags.Report(diag::warn_target_unknown_triple_components) << "environment" << Triple.getEnvironmentName(); +} + using namespace clang::targets; /// CreateTargetInfo - Return the target info object for the specified target /// options. @@ -707,6 +726,9 @@ } Target->TargetOpts = Opts; + // Check after we created the target has it only raises warnings. + CheckTriple(Diags, Triple); + // Set the target CPU if specified. if (!Opts->CPU.empty() && !Target->setCPU(Opts->CPU)) { Diags.Report(diag::err_target_unknown_cpu) << Opts->CPU; Index: clang/include/clang/Basic/DiagnosticCommonKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticCommonKinds.td +++ clang/include/clang/Basic/DiagnosticCommonKinds.td @@ -297,6 +297,8 @@ // Targets +def warn_target_unknown_triple_components : Warning< + "unknown triple %0 '%1'">; def err_target_unknown_triple : Error< "unknown target triple '%0', please use -triple or -arch">; def err_target_unknown_cpu : Error<"unknown target CPU '%0'">;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits