@@ -181,21 +181,14 @@ static void DefineTypeSize(const Twine &MacroName, TargetInfo::IntType Ty,
181
181
TI.isTypeSigned (Ty), Builder);
182
182
}
183
183
184
- static void DefineFmt (const LangOptions &LangOpts, const Twine &Prefix,
185
- TargetInfo::IntType Ty, const TargetInfo &TI,
186
- MacroBuilder &Builder) {
187
- StringRef FmtModifier = TI.getTypeFormatModifier (Ty);
188
- auto Emitter = [&](char Fmt) {
189
- Builder.defineMacro (Prefix + " _FMT" + Twine (Fmt) + " __" ,
190
- Twine (" \" " ) + FmtModifier + Twine (Fmt) + " \" " );
191
- };
184
+ static void DefineFmt (const Twine &Prefix, TargetInfo::IntType Ty,
185
+ const TargetInfo &TI, MacroBuilder &Builder) {
192
186
bool IsSigned = TI.isTypeSigned (Ty);
193
- llvm::for_each (StringRef (IsSigned ? " di" : " ouxX" ), Emitter);
194
-
195
- // C23 added the b and B modifiers for printing binary output of unsigned
196
- // integers. Conditionally define those if compiling in C23 mode.
197
- if (LangOpts.C23 && !IsSigned)
198
- llvm::for_each (StringRef (" bB" ), Emitter);
187
+ StringRef FmtModifier = TI.getTypeFormatModifier (Ty);
188
+ for (const char *Fmt = IsSigned ? " di" : " ouxX" ; *Fmt; ++Fmt) {
189
+ Builder.defineMacro (Prefix + " _FMT" + Twine (*Fmt) + " __" ,
190
+ Twine (" \" " ) + FmtModifier + Twine (*Fmt) + " \" " );
191
+ }
199
192
}
200
193
201
194
static void DefineType (const Twine &MacroName, TargetInfo::IntType Ty,
@@ -224,8 +217,7 @@ static void DefineTypeSizeAndWidth(const Twine &Prefix, TargetInfo::IntType Ty,
224
217
DefineTypeWidth (Prefix + " _WIDTH__" , Ty, TI, Builder);
225
218
}
226
219
227
- static void DefineExactWidthIntType (const LangOptions &LangOpts,
228
- TargetInfo::IntType Ty,
220
+ static void DefineExactWidthIntType (TargetInfo::IntType Ty,
229
221
const TargetInfo &TI,
230
222
MacroBuilder &Builder) {
231
223
int TypeWidth = TI.getTypeWidth (Ty);
@@ -244,7 +236,7 @@ static void DefineExactWidthIntType(const LangOptions &LangOpts,
244
236
const char *Prefix = IsSigned ? " __INT" : " __UINT" ;
245
237
246
238
DefineType (Prefix + Twine (TypeWidth) + " _TYPE__" , Ty, Builder);
247
- DefineFmt (LangOpts, Prefix + Twine (TypeWidth), Ty, TI, Builder);
239
+ DefineFmt (Prefix + Twine (TypeWidth), Ty, TI, Builder);
248
240
249
241
StringRef ConstSuffix (TI.getTypeConstantSuffix (Ty));
250
242
Builder.defineMacro (Prefix + Twine (TypeWidth) + " _C_SUFFIX__" , ConstSuffix);
@@ -267,8 +259,7 @@ static void DefineExactWidthIntTypeSize(TargetInfo::IntType Ty,
267
259
DefineTypeSize (Prefix + Twine (TypeWidth) + " _MAX__" , Ty, TI, Builder);
268
260
}
269
261
270
- static void DefineLeastWidthIntType (const LangOptions &LangOpts,
271
- unsigned TypeWidth, bool IsSigned,
262
+ static void DefineLeastWidthIntType (unsigned TypeWidth, bool IsSigned,
272
263
const TargetInfo &TI,
273
264
MacroBuilder &Builder) {
274
265
TargetInfo::IntType Ty = TI.getLeastIntTypeByWidth (TypeWidth, IsSigned);
@@ -283,12 +274,11 @@ static void DefineLeastWidthIntType(const LangOptions &LangOpts,
283
274
DefineTypeSizeAndWidth (Prefix + Twine (TypeWidth), Ty, TI, Builder);
284
275
else
285
276
DefineTypeSize (Prefix + Twine (TypeWidth) + " _MAX__" , Ty, TI, Builder);
286
- DefineFmt (LangOpts, Prefix + Twine (TypeWidth), Ty, TI, Builder);
277
+ DefineFmt (Prefix + Twine (TypeWidth), Ty, TI, Builder);
287
278
}
288
279
289
- static void DefineFastIntType (const LangOptions &LangOpts, unsigned TypeWidth,
290
- bool IsSigned, const TargetInfo &TI,
291
- MacroBuilder &Builder) {
280
+ static void DefineFastIntType (unsigned TypeWidth, bool IsSigned,
281
+ const TargetInfo &TI, MacroBuilder &Builder) {
292
282
// stdint.h currently defines the fast int types as equivalent to the least
293
283
// types.
294
284
TargetInfo::IntType Ty = TI.getLeastIntTypeByWidth (TypeWidth, IsSigned);
@@ -303,7 +293,7 @@ static void DefineFastIntType(const LangOptions &LangOpts, unsigned TypeWidth,
303
293
DefineTypeSizeAndWidth (Prefix + Twine (TypeWidth), Ty, TI, Builder);
304
294
else
305
295
DefineTypeSize (Prefix + Twine (TypeWidth) + " _MAX__" , Ty, TI, Builder);
306
- DefineFmt (LangOpts, Prefix + Twine (TypeWidth), Ty, TI, Builder);
296
+ DefineFmt (Prefix + Twine (TypeWidth), Ty, TI, Builder);
307
297
}
308
298
309
299
@@ -1130,28 +1120,27 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
1130
1120
DefineTypeSizeof (" __SIZEOF_INT128__" , 128 , TI, Builder);
1131
1121
1132
1122
DefineType (" __INTMAX_TYPE__" , TI.getIntMaxType (), Builder);
1133
- DefineFmt (LangOpts, " __INTMAX" , TI.getIntMaxType (), TI, Builder);
1123
+ DefineFmt (" __INTMAX" , TI.getIntMaxType (), TI, Builder);
1134
1124
Builder.defineMacro (" __INTMAX_C_SUFFIX__" ,
1135
1125
TI.getTypeConstantSuffix (TI.getIntMaxType ()));
1136
1126
DefineType (" __UINTMAX_TYPE__" , TI.getUIntMaxType (), Builder);
1137
- DefineFmt (LangOpts, " __UINTMAX" , TI.getUIntMaxType (), TI, Builder);
1127
+ DefineFmt (" __UINTMAX" , TI.getUIntMaxType (), TI, Builder);
1138
1128
Builder.defineMacro (" __UINTMAX_C_SUFFIX__" ,
1139
1129
TI.getTypeConstantSuffix (TI.getUIntMaxType ()));
1140
1130
DefineType (" __PTRDIFF_TYPE__" , TI.getPtrDiffType (LangAS::Default), Builder);
1141
- DefineFmt (LangOpts, " __PTRDIFF" , TI.getPtrDiffType (LangAS::Default), TI,
1142
- Builder);
1131
+ DefineFmt (" __PTRDIFF" , TI.getPtrDiffType (LangAS::Default), TI, Builder);
1143
1132
DefineType (" __INTPTR_TYPE__" , TI.getIntPtrType (), Builder);
1144
- DefineFmt (LangOpts, " __INTPTR" , TI.getIntPtrType (), TI, Builder);
1133
+ DefineFmt (" __INTPTR" , TI.getIntPtrType (), TI, Builder);
1145
1134
DefineType (" __SIZE_TYPE__" , TI.getSizeType (), Builder);
1146
- DefineFmt (LangOpts, " __SIZE" , TI.getSizeType (), TI, Builder);
1135
+ DefineFmt (" __SIZE" , TI.getSizeType (), TI, Builder);
1147
1136
DefineType (" __WCHAR_TYPE__" , TI.getWCharType (), Builder);
1148
1137
DefineType (" __WINT_TYPE__" , TI.getWIntType (), Builder);
1149
1138
DefineTypeSizeAndWidth (" __SIG_ATOMIC" , TI.getSigAtomicType (), TI, Builder);
1150
1139
DefineType (" __CHAR16_TYPE__" , TI.getChar16Type (), Builder);
1151
1140
DefineType (" __CHAR32_TYPE__" , TI.getChar32Type (), Builder);
1152
1141
1153
1142
DefineType (" __UINTPTR_TYPE__" , TI.getUIntPtrType (), Builder);
1154
- DefineFmt (LangOpts, " __UINTPTR" , TI.getUIntPtrType (), TI, Builder);
1143
+ DefineFmt (" __UINTPTR" , TI.getUIntPtrType (), TI, Builder);
1155
1144
1156
1145
// The C standard requires the width of uintptr_t and intptr_t to be the same,
1157
1146
// per 7.20.2.4p1. Same for intmax_t and uintmax_t, per 7.20.2.5p1.
@@ -1227,66 +1216,65 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
1227
1216
Builder.defineMacro (" __WINT_UNSIGNED__" );
1228
1217
1229
1218
// Define exact-width integer types for stdint.h
1230
- DefineExactWidthIntType (LangOpts, TargetInfo::SignedChar, TI, Builder);
1219
+ DefineExactWidthIntType (TargetInfo::SignedChar, TI, Builder);
1231
1220
1232
1221
if (TI.getShortWidth () > TI.getCharWidth ())
1233
- DefineExactWidthIntType (LangOpts, TargetInfo::SignedShort, TI, Builder);
1222
+ DefineExactWidthIntType (TargetInfo::SignedShort, TI, Builder);
1234
1223
1235
1224
if (TI.getIntWidth () > TI.getShortWidth ())
1236
- DefineExactWidthIntType (LangOpts, TargetInfo::SignedInt, TI, Builder);
1225
+ DefineExactWidthIntType (TargetInfo::SignedInt, TI, Builder);
1237
1226
1238
1227
if (TI.getLongWidth () > TI.getIntWidth ())
1239
- DefineExactWidthIntType (LangOpts, TargetInfo::SignedLong, TI, Builder);
1228
+ DefineExactWidthIntType (TargetInfo::SignedLong, TI, Builder);
1240
1229
1241
1230
if (TI.getLongLongWidth () > TI.getLongWidth ())
1242
- DefineExactWidthIntType (LangOpts, TargetInfo::SignedLongLong, TI, Builder);
1231
+ DefineExactWidthIntType (TargetInfo::SignedLongLong, TI, Builder);
1243
1232
1244
- DefineExactWidthIntType (LangOpts, TargetInfo::UnsignedChar, TI, Builder);
1233
+ DefineExactWidthIntType (TargetInfo::UnsignedChar, TI, Builder);
1245
1234
DefineExactWidthIntTypeSize (TargetInfo::UnsignedChar, TI, Builder);
1246
1235
DefineExactWidthIntTypeSize (TargetInfo::SignedChar, TI, Builder);
1247
1236
1248
1237
if (TI.getShortWidth () > TI.getCharWidth ()) {
1249
- DefineExactWidthIntType (LangOpts, TargetInfo::UnsignedShort, TI, Builder);
1238
+ DefineExactWidthIntType (TargetInfo::UnsignedShort, TI, Builder);
1250
1239
DefineExactWidthIntTypeSize (TargetInfo::UnsignedShort, TI, Builder);
1251
1240
DefineExactWidthIntTypeSize (TargetInfo::SignedShort, TI, Builder);
1252
1241
}
1253
1242
1254
1243
if (TI.getIntWidth () > TI.getShortWidth ()) {
1255
- DefineExactWidthIntType (LangOpts, TargetInfo::UnsignedInt, TI, Builder);
1244
+ DefineExactWidthIntType (TargetInfo::UnsignedInt, TI, Builder);
1256
1245
DefineExactWidthIntTypeSize (TargetInfo::UnsignedInt, TI, Builder);
1257
1246
DefineExactWidthIntTypeSize (TargetInfo::SignedInt, TI, Builder);
1258
1247
}
1259
1248
1260
1249
if (TI.getLongWidth () > TI.getIntWidth ()) {
1261
- DefineExactWidthIntType (LangOpts, TargetInfo::UnsignedLong, TI, Builder);
1250
+ DefineExactWidthIntType (TargetInfo::UnsignedLong, TI, Builder);
1262
1251
DefineExactWidthIntTypeSize (TargetInfo::UnsignedLong, TI, Builder);
1263
1252
DefineExactWidthIntTypeSize (TargetInfo::SignedLong, TI, Builder);
1264
1253
}
1265
1254
1266
1255
if (TI.getLongLongWidth () > TI.getLongWidth ()) {
1267
- DefineExactWidthIntType (LangOpts, TargetInfo::UnsignedLongLong, TI,
1268
- Builder);
1256
+ DefineExactWidthIntType (TargetInfo::UnsignedLongLong, TI, Builder);
1269
1257
DefineExactWidthIntTypeSize (TargetInfo::UnsignedLongLong, TI, Builder);
1270
1258
DefineExactWidthIntTypeSize (TargetInfo::SignedLongLong, TI, Builder);
1271
1259
}
1272
1260
1273
- DefineLeastWidthIntType (LangOpts, 8 , true , TI, Builder);
1274
- DefineLeastWidthIntType (LangOpts, 8 , false , TI, Builder);
1275
- DefineLeastWidthIntType (LangOpts, 16 , true , TI, Builder);
1276
- DefineLeastWidthIntType (LangOpts, 16 , false , TI, Builder);
1277
- DefineLeastWidthIntType (LangOpts, 32 , true , TI, Builder);
1278
- DefineLeastWidthIntType (LangOpts, 32 , false , TI, Builder);
1279
- DefineLeastWidthIntType (LangOpts, 64 , true , TI, Builder);
1280
- DefineLeastWidthIntType (LangOpts, 64 , false , TI, Builder);
1281
-
1282
- DefineFastIntType (LangOpts, 8 , true , TI, Builder);
1283
- DefineFastIntType (LangOpts, 8 , false , TI, Builder);
1284
- DefineFastIntType (LangOpts, 16 , true , TI, Builder);
1285
- DefineFastIntType (LangOpts, 16 , false , TI, Builder);
1286
- DefineFastIntType (LangOpts, 32 , true , TI, Builder);
1287
- DefineFastIntType (LangOpts, 32 , false , TI, Builder);
1288
- DefineFastIntType (LangOpts, 64 , true , TI, Builder);
1289
- DefineFastIntType (LangOpts, 64 , false , TI, Builder);
1261
+ DefineLeastWidthIntType (8 , true , TI, Builder);
1262
+ DefineLeastWidthIntType (8 , false , TI, Builder);
1263
+ DefineLeastWidthIntType (16 , true , TI, Builder);
1264
+ DefineLeastWidthIntType (16 , false , TI, Builder);
1265
+ DefineLeastWidthIntType (32 , true , TI, Builder);
1266
+ DefineLeastWidthIntType (32 , false , TI, Builder);
1267
+ DefineLeastWidthIntType (64 , true , TI, Builder);
1268
+ DefineLeastWidthIntType (64 , false , TI, Builder);
1269
+
1270
+ DefineFastIntType (8 , true , TI, Builder);
1271
+ DefineFastIntType (8 , false , TI, Builder);
1272
+ DefineFastIntType (16 , true , TI, Builder);
1273
+ DefineFastIntType (16 , false , TI, Builder);
1274
+ DefineFastIntType (32 , true , TI, Builder);
1275
+ DefineFastIntType (32 , false , TI, Builder);
1276
+ DefineFastIntType (64 , true , TI, Builder);
1277
+ DefineFastIntType (64 , false , TI, Builder);
1290
1278
1291
1279
Builder.defineMacro (" __USER_LABEL_PREFIX__" , TI.getUserLabelPrefix ());
1292
1280
0 commit comments