@@ -515,7 +515,9 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
515515 setBooleanContents(ZeroOrOneBooleanContent);
516516 setBooleanVectorContents(ZeroOrNegativeOneBooleanContent);
517517
518- if (Subtarget->isTargetMachO()) {
518+ const Triple &TT = TM.getTargetTriple();
519+
520+ if (TT.isOSBinFormatMachO()) {
519521 // Uses VFP for Thumb libfuncs if available.
520522 if (Subtarget->isThumb() && Subtarget->hasVFP2Base() &&
521523 Subtarget->hasARMOps() && !Subtarget->useSoftFloat()) {
@@ -588,9 +590,8 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
588590 }
589591
590592 // RTLIB
591- if (TM.isAAPCS_ABI() &&
592- (Subtarget->isTargetAEABI() || Subtarget->isTargetGNUAEABI() ||
593- Subtarget->isTargetMuslAEABI() || Subtarget->isTargetAndroid())) {
593+ if (TM.isAAPCS_ABI() && (TT.isTargetAEABI() || TT.isTargetGNUAEABI() ||
594+ TT.isTargetMuslAEABI() || TT.isAndroid())) {
594595 // clang-format off
595596 static const struct {
596597 const RTLIB::Libcall Op;
@@ -712,7 +713,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
712713 // The half <-> float conversion functions are always soft-float on
713714 // non-watchos platforms, but are needed for some targets which use a
714715 // hard-float calling convention by default.
715- if (!Subtarget->isTargetWatchABI ()) {
716+ if (!TT.isWatchABI ()) {
716717 if (TM.isAAPCS_ABI()) {
717718 setLibcallCallingConv(RTLIB::FPROUND_F32_F16, CallingConv::ARM_AAPCS);
718719 setLibcallCallingConv(RTLIB::FPROUND_F64_F16, CallingConv::ARM_AAPCS);
@@ -726,7 +727,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
726727
727728 // In EABI, these functions have an __aeabi_ prefix, but in GNUEABI they have
728729 // a __gnu_ prefix (which is the default).
729- if (Subtarget-> isTargetAEABI()) {
730+ if (TT. isTargetAEABI()) {
730731 static const struct {
731732 const RTLIB::Libcall Op;
732733 const char * const Name;
@@ -741,7 +742,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
741742 setLibcallName(LC.Op, LC.Name);
742743 setLibcallCallingConv(LC.Op, LC.CC);
743744 }
744- } else if (!Subtarget->isTargetMachO ()) {
745+ } else if (!TT.isOSBinFormatMachO ()) {
745746 setLibcallName(RTLIB::FPROUND_F32_F16, "__gnu_f2h_ieee");
746747 setLibcallName(RTLIB::FPEXT_F16_F32, "__gnu_h2f_ieee");
747748 }
@@ -1227,7 +1228,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
12271228 setOperationAction(ISD::UDIV, MVT::i32, LibCall);
12281229 }
12291230
1230- if (Subtarget->isTargetWindows () && !Subtarget->hasDivideInThumbMode()) {
1231+ if (TT.isOSWindows () && !Subtarget->hasDivideInThumbMode()) {
12311232 setOperationAction(ISD::SDIV, MVT::i32, Custom);
12321233 setOperationAction(ISD::UDIV, MVT::i32, Custom);
12331234
@@ -1239,9 +1240,8 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
12391240 setOperationAction(ISD::UREM, MVT::i32, Expand);
12401241
12411242 // Register based DivRem for AEABI (RTABI 4.2)
1242- if (Subtarget->isTargetAEABI() || Subtarget->isTargetAndroid() ||
1243- Subtarget->isTargetGNUAEABI() || Subtarget->isTargetMuslAEABI() ||
1244- Subtarget->isTargetWindows()) {
1243+ if (TT.isTargetAEABI() || TT.isAndroid() || TT.isTargetGNUAEABI() ||
1244+ TT.isTargetMuslAEABI() || TT.isOSWindows()) {
12451245 setOperationAction(ISD::SREM, MVT::i64, Custom);
12461246 setOperationAction(ISD::UREM, MVT::i64, Custom);
12471247 HasStandaloneRem = false;
@@ -1271,7 +1271,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
12711271 setOperationAction(ISD::STACKSAVE, MVT::Other, Expand);
12721272 setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand);
12731273
1274- if (Subtarget->isTargetWindows ())
1274+ if (TT.isOSWindows ())
12751275 setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Custom);
12761276 else
12771277 setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Expand);
@@ -1326,8 +1326,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
13261326 }
13271327
13281328 // Compute supported atomic widths.
1329- if (Subtarget->isTargetLinux() ||
1330- (!Subtarget->isMClass() && Subtarget->hasV6Ops())) {
1329+ if (TT.isOSLinux() || (!Subtarget->isMClass() && Subtarget->hasV6Ops())) {
13311330 // For targets where __sync_* routines are reliably available, we use them
13321331 // if necessary.
13331332 //
@@ -1538,7 +1537,7 @@ ARMTargetLowering::ARMTargetLowering(const TargetMachine &TM_,
15381537
15391538 // On MSVC, both 32-bit and 64-bit, ldexpf(f32) is not defined. MinGW has
15401539 // it, but it's just a wrapper around ldexp.
1541- if (Subtarget->isTargetWindows ()) {
1540+ if (TT.isOSWindows ()) {
15421541 for (ISD::NodeType Op : {ISD::FLDEXP, ISD::STRICT_FLDEXP, ISD::FFREXP})
15431542 if (isOperationExpand(Op, MVT::f32))
15441543 setOperationAction(Op, MVT::f32, Promote);
0 commit comments