Skip to content

Commit 45ff63b

Browse files
committed
[Driver] Also warn about -mwatchos-version-min and -mtvos-version-min
Sometimes users pass this option when targeting embedded architectures like armv7m on non-darwin platforms. This applies to watchOS and tvOS as well as iOS. Depends on D155407 Reviewed By: MaskRay, ahatanak Differential Revision: https://reviews.llvm.org/D155408
1 parent 9ebc24d commit 45ff63b

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

clang/lib/Driver/ToolChains/Darwin.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include "llvm/Support/Threading.h"
2727
#include "llvm/Support/VirtualFileSystem.h"
2828
#include "llvm/TargetParser/TargetParser.h"
29+
#include "llvm/TargetParser/Triple.h"
2930
#include <cstdlib> // ::getenv
3031

3132
using namespace clang::driver;
@@ -85,10 +86,16 @@ void darwin::setTripleTypeForMachOArchName(llvm::Triple &T, StringRef Str,
8586
if (ArchKind == llvm::ARM::ArchKind::ARMV6M ||
8687
ArchKind == llvm::ARM::ArchKind::ARMV7M ||
8788
ArchKind == llvm::ARM::ArchKind::ARMV7EM) {
88-
// Don't reject -mios-version-min= if we have an iOS triple.
89-
if (T.isiOS())
89+
// Don't reject these -version-min= if we have the appropriate triple.
90+
if (T.getOS() == llvm::Triple::IOS)
9091
for (Arg *A : Args.filtered(options::OPT_mios_version_min_EQ))
9192
A->ignoreTargetSpecific();
93+
if (T.getOS() == llvm::Triple::WatchOS)
94+
for (Arg *A : Args.filtered(options::OPT_mwatchos_version_min_EQ))
95+
A->ignoreTargetSpecific();
96+
if (T.getOS() == llvm::Triple::TvOS)
97+
for (Arg *A : Args.filtered(options::OPT_mtvos_version_min_EQ))
98+
A->ignoreTargetSpecific();
9299

93100
T.setOS(llvm::Triple::UnknownOS);
94101
T.setObjectFormat(llvm::Triple::MachO);

clang/test/Driver/macho-embedded.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@
88

99
// RUN: %clang -arch armv7m --target=thumbv7-apple-ios -mios-version-min=5 -fdriver-only -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-MACHO-EMBEDDED-DIAG
1010
// RUN: %clang -arch armv7m --target=thumbv7-apple-ios -mios-version-min=5 -mios-version-min=5 -fdriver-only -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-MACHO-EMBEDDED-DIAG
11+
// RUN: %clang -arch armv7m --target=thumbv7-apple-watchos -mwatchos-version-min=5 -fdriver-only -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-MACHO-EMBEDDED-DIAG
12+
// RUN: %clang -arch armv7m --target=thumbv7-apple-tvos -mtvos-version-min=5 -fdriver-only -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-MACHO-EMBEDDED-DIAG
13+
14+
// RUN: %clang -arch armv7m --target=thumbv7-apple-tvos -mios-version-min=5 -### -c %s 2>&1 | FileCheck %s --check-prefix=CHECK-MACHO-EMBEDDED-MIXED
1115

1216
// CHECK-IOS: "-triple" "thumbv7" "thumbv7-apple-ios
1317

1418
// CHECK-AAPCS: "-target-abi" "aapcs"
1519
// CHECK-APCS: "-target-abi" "apcs-gnu"
1620

17-
// CHECK-MACHO-EMBEDDED-DIAG: warning: argument unused during compilation: '-mios-version-min=5'
1821
// CHECK-MACHO-EMBEDDED: "-triple" "{{thumbv[67]e?m}}-apple-unknown-macho"
1922
// CHECK-MACHO-EMBEDDED: "-mrelocation-model" "pic"
23+
// CHECK-MACHO-EMBEDDED-DIAG: warning: argument unused during compilation: '-m{{ios|watchos|tvos}}-version-min=5'
24+
// CHECK-MACHO-EMBEDDED-MIXED: error: unsupported option '-mios-version-min=' for target 'thumbv7-apple-tvos'

0 commit comments

Comments
 (0)