@@ -385,44 +385,36 @@ static T extractMaskValue(T KeyPath) {
385
385
return KeyPath & Value;
386
386
}
387
387
388
- #define THIS_PREFIX (KEYPATH ) this ->KEYPATH
389
- #define NO_PREFIX (KEYPATH ) KEYPATH
390
-
391
- #define PARSE_OPTION_WITH_MARSHALLING ( \
392
- ARGS, DIAGS, SUCCESS, PREFIX_KEYPATH, PREFIX_TYPE, NAME, ID, KIND, GROUP, \
393
- ALIAS, ALIASARGS, FLAGS, PARAM, HELPTEXT, METAVAR, VALUES, SPELLING, \
394
- SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, IMPLIED_CHECK, \
395
- IMPLIED_VALUE, NORMALIZER, DENORMALIZER, MERGER, EXTRACTOR, TABLE_INDEX) \
388
+ #define PARSE_OPTION_WITH_MARSHALLING (ARGS, DIAGS, SUCCESS, ID, FLAGS, PARAM, \
389
+ SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
390
+ IMPLIED_CHECK, IMPLIED_VALUE, \
391
+ NORMALIZER, MERGER, TABLE_INDEX) \
396
392
if ((FLAGS)&options::CC1Option) { \
397
- PREFIX_KEYPATH ( KEYPATH) = MERGER (PREFIX_KEYPATH ( KEYPATH) , DEFAULT_VALUE); \
393
+ KEYPATH = MERGER (KEYPATH, DEFAULT_VALUE); \
398
394
if (IMPLIED_CHECK) \
399
- PREFIX_KEYPATH (KEYPATH) = \
400
- MERGER (PREFIX_KEYPATH (KEYPATH), IMPLIED_VALUE); \
395
+ KEYPATH = MERGER (KEYPATH, IMPLIED_VALUE); \
401
396
if (SHOULD_PARSE) \
402
397
if (auto MaybeValue = \
403
398
NORMALIZER (OPT_##ID, TABLE_INDEX, ARGS, DIAGS, SUCCESS)) \
404
- PREFIX_KEYPATH (KEYPATH) = MERGER ( \
405
- PREFIX_KEYPATH (KEYPATH), \
406
- static_cast <decltype (PREFIX_KEYPATH (KEYPATH))>(*MaybeValue)); \
399
+ KEYPATH = \
400
+ MERGER (KEYPATH, static_cast <decltype (KEYPATH)>(*MaybeValue)); \
407
401
}
408
402
409
403
// Capture the extracted value as a lambda argument to avoid potential issues
410
404
// with lifetime extension of the reference.
411
405
#define GENERATE_OPTION_WITH_MARSHALLING ( \
412
- ARGS, STRING_ALLOCATOR, PREFIX_KEYPATH, PREFIX_TYPE, NAME, ID, KIND, \
413
- GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, HELPTEXT, METAVAR, VALUES, \
414
- SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, \
415
- IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, MERGER, EXTRACTOR, \
406
+ ARGS, STRING_ALLOCATOR, KIND, FLAGS, SPELLING, ALWAYS_EMIT, KEYPATH, \
407
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, DENORMALIZER, EXTRACTOR, \
416
408
TABLE_INDEX) \
417
409
if ((FLAGS)&options::CC1Option) { \
418
410
[&](const auto &Extracted) { \
419
411
if (ALWAYS_EMIT || \
420
412
(Extracted != \
421
- static_cast <decltype (PREFIX_KEYPATH ( KEYPATH))>( \
422
- (IMPLIED_CHECK) ? (IMPLIED_VALUE) : (DEFAULT_VALUE)))) \
413
+ static_cast <decltype (KEYPATH)>((IMPLIED_CHECK) ? (IMPLIED_VALUE) \
414
+ : (DEFAULT_VALUE)))) \
423
415
DENORMALIZER (ARGS, SPELLING, STRING_ALLOCATOR, Option::KIND##Class, \
424
416
TABLE_INDEX, Extracted); \
425
- }(EXTRACTOR (PREFIX_KEYPATH ( KEYPATH))); \
417
+ }(EXTRACTOR (KEYPATH)); \
426
418
}
427
419
428
420
static const StringRef GetInputKindName (InputKind IK);
@@ -994,8 +986,15 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args,
994
986
// variable name and type.
995
987
const LangOptions *LangOpts = &LangOptsRef;
996
988
997
- #define CODEGEN_OPTION_WITH_MARSHALLING (...) \
998
- PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, NO_PREFIX, __VA_ARGS__)
989
+ #define CODEGEN_OPTION_WITH_MARSHALLING ( \
990
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
991
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
992
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
993
+ MERGER, EXTRACTOR, TABLE_INDEX) \
994
+ PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, ID, FLAGS, PARAM, \
995
+ SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
996
+ IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
997
+ MERGER, TABLE_INDEX)
999
998
#include " clang/Driver/Options.inc"
1000
999
#undef CODEGEN_OPTION_WITH_MARSHALLING
1001
1000
@@ -1457,8 +1456,15 @@ bool CompilerInvocation::parseSimpleArgs(const ArgList &Args,
1457
1456
DiagnosticsEngine &Diags) {
1458
1457
bool Success = true ;
1459
1458
1460
- #define OPTION_WITH_MARSHALLING (...) \
1461
- PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, THIS_PREFIX, __VA_ARGS__)
1459
+ #define OPTION_WITH_MARSHALLING ( \
1460
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
1461
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
1462
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
1463
+ MERGER, EXTRACTOR, TABLE_INDEX) \
1464
+ PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, ID, FLAGS, PARAM, \
1465
+ SHOULD_PARSE, this ->KEYPATH , DEFAULT_VALUE, \
1466
+ IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
1467
+ MERGER, TABLE_INDEX)
1462
1468
#include " clang/Driver/Options.inc"
1463
1469
#undef OPTION_WITH_MARSHALLING
1464
1470
@@ -1480,8 +1486,15 @@ bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
1480
1486
DiagnosticOptions *DiagnosticOpts = &Opts;
1481
1487
bool Success = true ;
1482
1488
1483
- #define DIAG_OPTION_WITH_MARSHALLING (...) \
1484
- PARSE_OPTION_WITH_MARSHALLING (Args, *Diags, Success, NO_PREFIX, __VA_ARGS__)
1489
+ #define DIAG_OPTION_WITH_MARSHALLING ( \
1490
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
1491
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
1492
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
1493
+ MERGER, EXTRACTOR, TABLE_INDEX) \
1494
+ PARSE_OPTION_WITH_MARSHALLING (Args, *Diags, Success, ID, FLAGS, PARAM, \
1495
+ SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
1496
+ IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
1497
+ MERGER, TABLE_INDEX)
1485
1498
#include " clang/Driver/Options.inc"
1486
1499
#undef DIAG_OPTION_WITH_MARSHALLING
1487
1500
@@ -1834,8 +1847,14 @@ static void GenerateHeaderSearchArgs(const HeaderSearchOptions &Opts,
1834
1847
SmallVectorImpl<const char *> &Args,
1835
1848
CompilerInvocation::StringAllocator SA) {
1836
1849
const HeaderSearchOptions *HeaderSearchOpts = &Opts;
1837
- #define HEADER_SEARCH_OPTION_WITH_MARSHALLING (...) \
1838
- GENERATE_OPTION_WITH_MARSHALLING (Args, SA, NO_PREFIX, __VA_ARGS__)
1850
+ #define HEADER_SEARCH_OPTION_WITH_MARSHALLING ( \
1851
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
1852
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
1853
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
1854
+ MERGER, EXTRACTOR, TABLE_INDEX) \
1855
+ GENERATE_OPTION_WITH_MARSHALLING ( \
1856
+ Args, SA, KIND, FLAGS, SPELLING, ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, \
1857
+ IMPLIED_CHECK, IMPLIED_VALUE, DENORMALIZER, EXTRACTOR, TABLE_INDEX)
1839
1858
#include " clang/Driver/Options.inc"
1840
1859
#undef HEADER_SEARCH_OPTION_WITH_MARSHALLING
1841
1860
}
@@ -1846,8 +1865,15 @@ static void ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args,
1846
1865
HeaderSearchOptions *HeaderSearchOpts = &Opts;
1847
1866
bool Success = true ;
1848
1867
1849
- #define HEADER_SEARCH_OPTION_WITH_MARSHALLING (...) \
1850
- PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, NO_PREFIX, __VA_ARGS__)
1868
+ #define HEADER_SEARCH_OPTION_WITH_MARSHALLING ( \
1869
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
1870
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
1871
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
1872
+ MERGER, EXTRACTOR, TABLE_INDEX) \
1873
+ PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, ID, FLAGS, PARAM, \
1874
+ SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
1875
+ IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
1876
+ MERGER, TABLE_INDEX)
1851
1877
#include " clang/Driver/Options.inc"
1852
1878
#undef HEADER_SEARCH_OPTION_WITH_MARSHALLING
1853
1879
@@ -2266,8 +2292,15 @@ void CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
2266
2292
LangOptions *LangOpts = &Opts;
2267
2293
bool Success = true ;
2268
2294
2269
- #define LANG_OPTION_WITH_MARSHALLING (...) \
2270
- PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, NO_PREFIX, __VA_ARGS__)
2295
+ #define LANG_OPTION_WITH_MARSHALLING ( \
2296
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
2297
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
2298
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
2299
+ MERGER, EXTRACTOR, TABLE_INDEX) \
2300
+ PARSE_OPTION_WITH_MARSHALLING (Args, Diags, Success, ID, FLAGS, PARAM, \
2301
+ SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
2302
+ IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
2303
+ MERGER, TABLE_INDEX)
2271
2304
#include " clang/Driver/Options.inc"
2272
2305
#undef LANG_OPTION_WITH_MARSHALLING
2273
2306
@@ -2983,8 +3016,16 @@ std::string CompilerInvocation::getModuleHash() const {
2983
3016
2984
3017
void CompilerInvocation::generateCC1CommandLine (
2985
3018
SmallVectorImpl<const char *> &Args, StringAllocator SA) const {
2986
- #define OPTION_WITH_MARSHALLING (...) \
2987
- GENERATE_OPTION_WITH_MARSHALLING (Args, SA, THIS_PREFIX, __VA_ARGS__)
3019
+ #define OPTION_WITH_MARSHALLING ( \
3020
+ PREFIX_TYPE, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
3021
+ HELPTEXT, METAVAR, VALUES, SPELLING, SHOULD_PARSE, ALWAYS_EMIT, KEYPATH, \
3022
+ DEFAULT_VALUE, IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, DENORMALIZER, \
3023
+ MERGER, EXTRACTOR, TABLE_INDEX) \
3024
+ GENERATE_OPTION_WITH_MARSHALLING (Args, SA, KIND, FLAGS, SPELLING, \
3025
+ ALWAYS_EMIT, this ->KEYPATH , DEFAULT_VALUE, \
3026
+ IMPLIED_CHECK, IMPLIED_VALUE, DENORMALIZER, \
3027
+ EXTRACTOR, TABLE_INDEX)
3028
+
2988
3029
#define DIAG_OPTION_WITH_MARSHALLING OPTION_WITH_MARSHALLING
2989
3030
#define LANG_OPTION_WITH_MARSHALLING OPTION_WITH_MARSHALLING
2990
3031
#define CODEGEN_OPTION_WITH_MARSHALLING OPTION_WITH_MARSHALLING
0 commit comments