@@ -48,12 +48,12 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
4848 Builder.defineMacro (" _REENTRANT" );
4949
5050 // Get the platform type and version number from the triple.
51- VersionTuple OsVersion ;
51+ unsigned Maj, Min, Rev ;
5252 if (Triple.isMacOSX ()) {
53- Triple.getMacOSXVersion (OsVersion );
53+ Triple.getMacOSXVersion (Maj, Min, Rev );
5454 PlatformName = " macos" ;
5555 } else {
56- OsVersion = Triple.getOSVersion ();
56+ Triple.getOSVersion (Maj, Min, Rev );
5757 PlatformName = llvm::Triple::getOSTypeName (Triple.getOS ());
5858 if (PlatformName == " ios" && Triple.isMacCatalystEnvironment ())
5959 PlatformName = " maccatalyst" ;
@@ -63,29 +63,29 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
6363 // generating code for Win32 ABI. No need to emit
6464 // __ENVIRONMENT_XX_OS_VERSION_MIN_REQUIRED__.
6565 if (PlatformName == " win32" ) {
66- PlatformMinVersion = OsVersion ;
66+ PlatformMinVersion = VersionTuple (Maj, Min, Rev) ;
6767 return ;
6868 }
6969
7070 // Set the appropriate OS version define.
7171 if (Triple.isiOS ()) {
72- assert (OsVersion < VersionTuple ( 100 ) && " Invalid version!" );
72+ assert (Maj < 100 && Min < 100 && Rev < 100 && " Invalid version!" );
7373 char Str[7 ];
74- if (OsVersion. getMajor () < 10 ) {
75- Str[0 ] = ' 0' + OsVersion. getMajor () ;
76- Str[1 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) / 10 );
77- Str[2 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) % 10 );
78- Str[3 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) / 10 );
79- Str[4 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) % 10 );
74+ if (Maj < 10 ) {
75+ Str[0 ] = ' 0' + Maj ;
76+ Str[1 ] = ' 0' + (Min / 10 );
77+ Str[2 ] = ' 0' + (Min % 10 );
78+ Str[3 ] = ' 0' + (Rev / 10 );
79+ Str[4 ] = ' 0' + (Rev % 10 );
8080 Str[5 ] = ' \0 ' ;
8181 } else {
8282 // Handle versions >= 10.
83- Str[0 ] = ' 0' + (OsVersion. getMajor () / 10 );
84- Str[1 ] = ' 0' + (OsVersion. getMajor () % 10 );
85- Str[2 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) / 10 );
86- Str[3 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) % 10 );
87- Str[4 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) / 10 );
88- Str[5 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) % 10 );
83+ Str[0 ] = ' 0' + (Maj / 10 );
84+ Str[1 ] = ' 0' + (Maj % 10 );
85+ Str[2 ] = ' 0' + (Min / 10 );
86+ Str[3 ] = ' 0' + (Min % 10 );
87+ Str[4 ] = ' 0' + (Rev / 10 );
88+ Str[5 ] = ' 0' + (Rev % 10 );
8989 Str[6 ] = ' \0 ' ;
9090 }
9191 if (Triple.isTvOS ())
@@ -95,36 +95,36 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
9595 Str);
9696
9797 } else if (Triple.isWatchOS ()) {
98- assert (OsVersion < VersionTuple ( 10 ) && " Invalid version!" );
98+ assert (Maj < 10 && Min < 100 && Rev < 100 && " Invalid version!" );
9999 char Str[6 ];
100- Str[0 ] = ' 0' + OsVersion. getMajor () ;
101- Str[1 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) / 10 );
102- Str[2 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) % 10 );
103- Str[3 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) / 10 );
104- Str[4 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) % 10 );
100+ Str[0 ] = ' 0' + Maj ;
101+ Str[1 ] = ' 0' + (Min / 10 );
102+ Str[2 ] = ' 0' + (Min % 10 );
103+ Str[3 ] = ' 0' + (Rev / 10 );
104+ Str[4 ] = ' 0' + (Rev % 10 );
105105 Str[5 ] = ' \0 ' ;
106106 Builder.defineMacro (" __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__" , Str);
107107 } else if (Triple.isMacOSX ()) {
108108 // Note that the Driver allows versions which aren't representable in the
109109 // define (because we only get a single digit for the minor and micro
110110 // revision numbers). So, we limit them to the maximum representable
111111 // version.
112- assert (OsVersion < VersionTuple ( 100 ) && " Invalid version!" );
112+ assert (Maj < 100 && Min < 100 && Rev < 100 && " Invalid version!" );
113113 char Str[7 ];
114- if (OsVersion < VersionTuple ( 10 , 10 )) {
115- Str[0 ] = ' 0' + (OsVersion. getMajor () / 10 );
116- Str[1 ] = ' 0' + (OsVersion. getMajor () % 10 );
117- Str[2 ] = ' 0' + std::min (OsVersion. getMinor (). getValueOr ( 0 ) , 9U );
118- Str[3 ] = ' 0' + std::min (OsVersion. getSubminor (). getValueOr ( 0 ) , 9U );
114+ if (Maj < 10 || (Maj == 10 && Min < 10 )) {
115+ Str[0 ] = ' 0' + (Maj / 10 );
116+ Str[1 ] = ' 0' + (Maj % 10 );
117+ Str[2 ] = ' 0' + std::min (Min , 9U );
118+ Str[3 ] = ' 0' + std::min (Rev , 9U );
119119 Str[4 ] = ' \0 ' ;
120120 } else {
121121 // Handle versions > 10.9.
122- Str[0 ] = ' 0' + (OsVersion. getMajor () / 10 );
123- Str[1 ] = ' 0' + (OsVersion. getMajor () % 10 );
124- Str[2 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) / 10 );
125- Str[3 ] = ' 0' + (OsVersion. getMinor (). getValueOr ( 0 ) % 10 );
126- Str[4 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) / 10 );
127- Str[5 ] = ' 0' + (OsVersion. getSubminor (). getValueOr ( 0 ) % 10 );
122+ Str[0 ] = ' 0' + (Maj / 10 );
123+ Str[1 ] = ' 0' + (Maj % 10 );
124+ Str[2 ] = ' 0' + (Min / 10 );
125+ Str[3 ] = ' 0' + (Min % 10 );
126+ Str[4 ] = ' 0' + (Rev / 10 );
127+ Str[5 ] = ' 0' + (Rev % 10 );
128128 Str[6 ] = ' \0 ' ;
129129 }
130130 Builder.defineMacro (" __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__" , Str);
@@ -134,7 +134,7 @@ void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
134134 if (Triple.isOSDarwin ())
135135 Builder.defineMacro (" __MACH__" );
136136
137- PlatformMinVersion = OsVersion ;
137+ PlatformMinVersion = VersionTuple (Maj, Min, Rev) ;
138138}
139139
140140static void addMinGWDefines (const llvm::Triple &Triple, const LangOptions &Opts,
0 commit comments