abeserminji updated this revision to Diff 108067.
abeserminji added a comment.

Comments resolved and patch adapted to current revision.


Repository:
  rL LLVM

https://reviews.llvm.org/D35624

Files:
  Basic/Targets/Mips.cpp
  clang/Basic/DiagnosticCommonKinds.td


Index: Basic/Targets/Mips.cpp
===================================================================
--- Basic/Targets/Mips.cpp
+++ Basic/Targets/Mips.cpp
@@ -203,6 +203,12 @@
 }
 
 bool MipsTargetInfo::validateTarget(DiagnosticsEngine &Diags) const {
+  if ((getTriple().getArch() == llvm::Triple::mips64 ||
+       getTriple().getArch() == llvm::Triple::mips64el) &&
+       IsMicromips && (ABI == "n32" || ABI == "n64")) {
+    Diags.Report(diag::err_target_unsupported_cpu_for_micromips) << CPU;
+    return false;
+  }
   // FIXME: It's valid to use O32 on a 64-bit CPU but the backend can't handle
   //        this yet. It's better to fail here than on the backend assertion.
   if (processorSupportsGPR64() && ABI == "o32") {
Index: clang/Basic/DiagnosticCommonKinds.td
===================================================================
--- clang/Basic/DiagnosticCommonKinds.td
+++ clang/Basic/DiagnosticCommonKinds.td
@@ -185,6 +185,8 @@
 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'">;
+def err_target_unsupported_cpu_for_micromips : Error<
+  "micromips is not supported for target CPU '%0'">;
 def err_target_unknown_abi : Error<"unknown target ABI '%0'">;
 def err_target_unsupported_abi : Error<"ABI '%0' is not supported on CPU 
'%1'">;
 def err_target_unsupported_abi_for_triple : Error<


Index: Basic/Targets/Mips.cpp
===================================================================
--- Basic/Targets/Mips.cpp
+++ Basic/Targets/Mips.cpp
@@ -203,6 +203,12 @@
 }
 
 bool MipsTargetInfo::validateTarget(DiagnosticsEngine &Diags) const {
+  if ((getTriple().getArch() == llvm::Triple::mips64 ||
+       getTriple().getArch() == llvm::Triple::mips64el) &&
+       IsMicromips && (ABI == "n32" || ABI == "n64")) {
+    Diags.Report(diag::err_target_unsupported_cpu_for_micromips) << CPU;
+    return false;
+  }
   // FIXME: It's valid to use O32 on a 64-bit CPU but the backend can't handle
   //        this yet. It's better to fail here than on the backend assertion.
   if (processorSupportsGPR64() && ABI == "o32") {
Index: clang/Basic/DiagnosticCommonKinds.td
===================================================================
--- clang/Basic/DiagnosticCommonKinds.td
+++ clang/Basic/DiagnosticCommonKinds.td
@@ -185,6 +185,8 @@
 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'">;
+def err_target_unsupported_cpu_for_micromips : Error<
+  "micromips is not supported for target CPU '%0'">;
 def err_target_unknown_abi : Error<"unknown target ABI '%0'">;
 def err_target_unsupported_abi : Error<"ABI '%0' is not supported on CPU '%1'">;
 def err_target_unsupported_abi_for_triple : Error<
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to