================
@@ -728,9 +744,19 @@ static llvm::Triple computeTargetTriple(const Driver &D, 
StringRef TargetTriple,
         Target.setEnvironment(llvm::Triple::GNUX32);
     } else if (A->getOption().matches(options::OPT_m32) ||
                A->getOption().matches(options::OPT_maix32)) {
-      if (D.IsFlangMode() && !Target.isOSAIX()) {
-        D.Diag(diag::err_drv_unsupported_opt_for_target)
-            << A->getAsString(Args) << Target.str();
+      if (D.IsFlangMode()) {
+        // Flang does not support 32-bit compilation.
+        // On an AIX host, -m32/-maix32 is always an error.
+        // On a non-AIX host, it is an error only when targeting AIX.
+        llvm::Triple HostTriple(D.getTargetTriple());
+        if (HostTriple.isOSAIX() || Target.isOSAIX()) {
+          D.Diag(diag::err_drv_compile_mode_unsupported);
+        } else {
+          AT = Target.get32BitArchVariant().getArch();
+          if (AT == llvm::Triple::ppcle)
+            D.Diag(diag::err_drv_unsupported_opt_for_target)
+                << A->getAsString(Args) << Target.str();
+        }
----------------
kkwli wrote:

Yes. The logic is here is a little bit confusing. What I want to achieve is 
that if target AIX, issue `err_drv_compile_mode_unsupported_aix` else 
`drv_unsupported_opt_for_target`. I simplify the logic now.

https://github.com/llvm/llvm-project/pull/209919
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to