Author: Fangrui Song Date: 2023-09-10T13:06:27-07:00 New Revision: 9f77facfce3ca23213c1de2e3e4c969b5187e29d
URL: https://github.com/llvm/llvm-project/commit/9f77facfce3ca23213c1de2e3e4c969b5187e29d DIFF: https://github.com/llvm/llvm-project/commit/9f77facfce3ca23213c1de2e3e4c969b5187e29d.diff LOG: [Driver] Properly report error for unsupported powerpc darwin/macos triples The removal started at https://reviews.llvm.org/D50989 and https://reviews.llvm.org/D75494 removed the Triple support. Without recognizing Darwin triples as Mach-O, we will get assertion error in ToolChains/Darwin.h due to the universal binary mechanism. Fix #47698 Added: Modified: clang/test/Driver/unsupported-target-arch.c llvm/lib/TargetParser/Triple.cpp llvm/unittests/TargetParser/TripleTest.cpp Removed: ################################################################################ diff --git a/clang/test/Driver/unsupported-target-arch.c b/clang/test/Driver/unsupported-target-arch.c index 24174650151f1ce..ce1d99007f1a008 100644 --- a/clang/test/Driver/unsupported-target-arch.c +++ b/clang/test/Driver/unsupported-target-arch.c @@ -59,3 +59,7 @@ // RUN: not %clang --target=thumbeb-none-elf -o %t.o %s 2> %t.err // RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-THUMBEB-INVALID-ENV %s // CHECK-THUMBEB-INVALID-ENV: warning: mismatch between architecture and environment in target triple 'thumbeb-none-elf'; did you mean 'thumbeb-none-eabi'? [-Winvalid-command-line-argument]{{$}} + +// RUN: not %clang --target=powerpc-apple-darwin -o /dev/null %s 2> %t.err +// RUN: FileCheck --input-file=%t.err --check-prefix=CHECK-PPCMAC %s +// CHECK-PPCMAC: error: unknown target triple 'unknown-apple-macosx10.4.0'{{$}} diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp index 5eea4acd1c6b8de..1424229479c24ed 100644 --- a/llvm/lib/TargetParser/Triple.cpp +++ b/llvm/lib/TargetParser/Triple.cpp @@ -782,6 +782,8 @@ static Triple::SubArchType parseSubArch(StringRef SubArchName) { } static Triple::ObjectFormatType getDefaultFormat(const Triple &T) { + if (T.isOSDarwin()) + return Triple::MachO; switch (T.getArch()) { case Triple::UnknownArch: case Triple::aarch64: @@ -790,9 +792,7 @@ static Triple::ObjectFormatType getDefaultFormat(const Triple &T) { case Triple::thumb: case Triple::x86: case Triple::x86_64: - if (T.isOSDarwin()) - return Triple::MachO; - else if (T.isOSWindows()) + if (T.isOSWindows()) return Triple::COFF; return Triple::ELF; diff --git a/llvm/unittests/TargetParser/TripleTest.cpp b/llvm/unittests/TargetParser/TripleTest.cpp index ce1f1dc8eb68fa0..6c9d51374a2d944 100644 --- a/llvm/unittests/TargetParser/TripleTest.cpp +++ b/llvm/unittests/TargetParser/TripleTest.cpp @@ -1801,6 +1801,7 @@ TEST(TripleTest, FileFormat) { EXPECT_EQ(Triple::MachO, Triple("i686-apple-macosx").getObjectFormat()); EXPECT_EQ(Triple::MachO, Triple("i686-apple-ios").getObjectFormat()); EXPECT_EQ(Triple::MachO, Triple("i686---macho").getObjectFormat()); + EXPECT_EQ(Triple::MachO, Triple("powerpc-apple-macosx").getObjectFormat()); EXPECT_EQ(Triple::COFF, Triple("i686--win32").getObjectFormat()); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits