================
@@ -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