@@ -2912,16 +2912,68 @@ static bool sdkSupportsBuiltinModules(const Darwin::DarwinPlatformKind &TargetPl
2912
2912
}
2913
2913
}
2914
2914
2915
- void Darwin::addClangTargetOptions (const llvm::opt::ArgList &DriverArgs,
2916
- llvm::opt::ArgStringList &CC1Args,
2917
- Action::OffloadKind DeviceOffloadKind) const {
2915
+ static inline llvm::VersionTuple
2916
+ sizedDeallocMinVersion (llvm::Triple::OSType OS) {
2917
+ switch (OS) {
2918
+ default :
2919
+ break ;
2920
+ case llvm::Triple::Darwin:
2921
+ case llvm::Triple::MacOSX: // Earliest supporting version is 10.12.
2922
+ return llvm::VersionTuple (10U , 12U );
2923
+ case llvm::Triple::IOS:
2924
+ case llvm::Triple::TvOS: // Earliest supporting version is 10.0.0.
2925
+ return llvm::VersionTuple (10U );
2926
+ case llvm::Triple::WatchOS: // Earliest supporting version is 3.0.0.
2927
+ return llvm::VersionTuple (3U );
2928
+ }
2929
+
2930
+ llvm_unreachable (" Unexpected OS" );
2931
+ }
2932
+
2933
+ bool Darwin::isSizedDeallocationUnavailable () const {
2934
+ llvm::Triple::OSType OS;
2935
+
2936
+ if (isTargetMacCatalyst ())
2937
+ return TargetVersion < sizedDeallocMinVersion (llvm::Triple::MacOSX);
2938
+ switch (TargetPlatform) {
2939
+ case MacOS: // Earlier than 10.12.
2940
+ OS = llvm::Triple::MacOSX;
2941
+ break ;
2942
+ case IPhoneOS:
2943
+ OS = llvm::Triple::IOS;
2944
+ break ;
2945
+ case TvOS: // Earlier than 10.0.
2946
+ OS = llvm::Triple::TvOS;
2947
+ break ;
2948
+ case WatchOS: // Earlier than 3.0.
2949
+ OS = llvm::Triple::WatchOS;
2950
+ break ;
2951
+ case DriverKit:
2952
+ case XROS:
2953
+ // Always available.
2954
+ return false ;
2955
+ }
2956
+
2957
+ return TargetVersion < sizedDeallocMinVersion (OS);
2958
+ }
2959
+
2960
+ void Darwin::addClangTargetOptions (
2961
+ const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
2962
+ Action::OffloadKind DeviceOffloadKind) const {
2918
2963
// Pass "-faligned-alloc-unavailable" only when the user hasn't manually
2919
2964
// enabled or disabled aligned allocations.
2920
2965
if (!DriverArgs.hasArgNoClaim (options::OPT_faligned_allocation,
2921
2966
options::OPT_fno_aligned_allocation) &&
2922
2967
isAlignedAllocationUnavailable ())
2923
2968
CC1Args.push_back (" -faligned-alloc-unavailable" );
2924
2969
2970
+ // Pass "-fno-sized-deallocation" only when the user hasn't manually enabled
2971
+ // or disabled sized deallocations.
2972
+ if (!DriverArgs.hasArgNoClaim (options::OPT_fsized_deallocation,
2973
+ options::OPT_fno_sized_deallocation) &&
2974
+ isSizedDeallocationUnavailable ())
2975
+ CC1Args.push_back (" -fno-sized-deallocation" );
2976
+
2925
2977
addClangCC1ASTargetOptions (DriverArgs, CC1Args);
2926
2978
2927
2979
// Enable compatibility mode for NSItemProviderCompletionHandler in
0 commit comments