@@ -328,8 +328,29 @@ static void denormalizeStringVector(SmallVectorImpl<const char *> &Args,
328
328
Option::OptionClass OptClass,
329
329
unsigned TableIndex,
330
330
const std::vector<std::string> &Values) {
331
- for (const std::string &Value : Values) {
332
- denormalizeString (Args, Spelling, SA, OptClass, TableIndex, Value);
331
+ switch (OptClass) {
332
+ case Option::CommaJoinedClass: {
333
+ std::string CommaJoinedValue;
334
+ if (!Values.empty ()) {
335
+ CommaJoinedValue.append (Values.front ());
336
+ for (const std::string &Value : llvm::drop_begin (Values, 1 )) {
337
+ CommaJoinedValue.append (" ," );
338
+ CommaJoinedValue.append (Value);
339
+ }
340
+ }
341
+ denormalizeString (Args, Spelling, SA, Option::OptionClass::JoinedClass,
342
+ TableIndex, CommaJoinedValue);
343
+ break ;
344
+ }
345
+ case Option::JoinedClass:
346
+ case Option::SeparateClass:
347
+ case Option::JoinedOrSeparateClass:
348
+ for (const std::string &Value : Values)
349
+ denormalizeString (Args, Spelling, SA, OptClass, TableIndex, Value);
350
+ break ;
351
+ default :
352
+ llvm_unreachable (" Cannot denormalize an option with option class "
353
+ " incompatible with string vector denormalization." );
333
354
}
334
355
}
335
356
@@ -786,7 +807,6 @@ static void parseAnalyzerConfigs(AnalyzerOptions &AnOpts,
786
807
}
787
808
788
809
static void ParseCommentArgs (CommentOptions &Opts, ArgList &Args) {
789
- Opts.BlockCommandNames = Args.getAllArgValues (OPT_fcomment_block_commands);
790
810
Opts.ParseAllComments = Args.hasArg (OPT_fparse_all_comments);
791
811
}
792
812
@@ -991,8 +1011,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
991
1011
}
992
1012
}
993
1013
994
- Opts.Reciprocals = Args.getAllArgValues (OPT_mrecip_EQ);
995
-
996
1014
// Basic Block Sections implies Function Sections.
997
1015
Opts.FunctionSections =
998
1016
Args.hasArg (OPT_ffunction_sections) ||
@@ -1122,10 +1140,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
1122
1140
}
1123
1141
Opts.LinkBitcodeFiles .push_back (F);
1124
1142
}
1125
- Opts.SanitizeCoverageAllowlistFiles =
1126
- Args.getAllArgValues (OPT_fsanitize_coverage_allowlist);
1127
- Opts.SanitizeCoverageBlocklistFiles =
1128
- Args.getAllArgValues (OPT_fsanitize_coverage_blocklist);
1129
1143
Opts.SSPBufferSize =
1130
1144
getLastArgIntValue (Args, OPT_stack_protector_buffer_size, 8 , Diags);
1131
1145
@@ -1207,8 +1221,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
1207
1221
}
1208
1222
}
1209
1223
1210
- Opts.DependentLibraries = Args.getAllArgValues (OPT_dependent_lib);
1211
- Opts.LinkerOptions = Args.getAllArgValues (OPT_linker_option);
1212
1224
bool NeedLocTracking = false ;
1213
1225
1214
1226
if (!Opts.OptRecordFile .empty ())
@@ -1282,8 +1294,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
1282
1294
if (NeedLocTracking && Opts.getDebugInfo () == codegenoptions::NoDebugInfo)
1283
1295
Opts.setDebugInfo (codegenoptions::LocTrackingOnly);
1284
1296
1285
- Opts.RewriteMapFiles = Args.getAllArgValues (OPT_frewrite_map_file);
1286
-
1287
1297
// Parse -fsanitize-recover= arguments.
1288
1298
// FIXME: Report unrecoverable sanitizers incorrectly specified here.
1289
1299
parseSanitizerKinds (" -fsanitize-recover=" ,
@@ -1295,10 +1305,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
1295
1305
1296
1306
Opts.EmitVersionIdentMetadata = Args.hasFlag (OPT_Qy, OPT_Qn, true );
1297
1307
1298
- Opts.DefaultFunctionAttrs = Args.getAllArgValues (OPT_default_function_attr);
1299
-
1300
- Opts.PassPlugins = Args.getAllArgValues (OPT_fpass_plugin_EQ);
1301
-
1302
1308
return Success;
1303
1309
}
1304
1310
@@ -1484,7 +1490,6 @@ bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
1484
1490
Opts.ShowParseableFixits = Args.hasArg (OPT_fdiagnostics_parseable_fixits);
1485
1491
Opts.ShowPresumedLoc = !Args.hasArg (OPT_fno_diagnostics_use_presumed_location);
1486
1492
Opts.VerifyDiagnostics = Args.hasArg (OPT_verify) || Args.hasArg (OPT_verify_EQ);
1487
- Opts.VerifyPrefixes = Args.getAllArgValues (OPT_verify_EQ);
1488
1493
if (Args.hasArg (OPT_verify))
1489
1494
Opts.VerifyPrefixes .push_back (" expected" );
1490
1495
// Keep VerifyPrefixes in its original order for the sake of diagnostics, and
@@ -1531,8 +1536,6 @@ bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
1531
1536
Opts.MessageLength =
1532
1537
getLastArgIntValue (Args, OPT_fmessage_length_EQ, 0 , Diags);
1533
1538
1534
- Opts.UndefPrefixes = Args.getAllArgValues (OPT_Wundef_prefix_EQ);
1535
-
1536
1539
addDiagnosticArgs (Args, OPT_W_Group, OPT_W_value_Group, Opts.Warnings );
1537
1540
addDiagnosticArgs (Args, OPT_R_Group, OPT_R_value_Group, Opts.Remarks );
1538
1541
@@ -1729,8 +1732,6 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
1729
1732
}
1730
1733
1731
1734
Opts.Plugins = Args.getAllArgValues (OPT_load);
1732
- Opts.ASTMergeFiles = Args.getAllArgValues (OPT_ast_merge);
1733
- Opts.LLVMArgs = Args.getAllArgValues (OPT_mllvm);
1734
1735
Opts.ASTDumpDecls = Args.hasArg (OPT_ast_dump, OPT_ast_dump_EQ);
1735
1736
Opts.ASTDumpAll = Args.hasArg (OPT_ast_dump_all, OPT_ast_dump_all_EQ);
1736
1737
// Only the -fmodule-file=<file> form.
@@ -1739,7 +1740,6 @@ static InputKind ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args,
1739
1740
if (Val.find (' =' ) == StringRef::npos)
1740
1741
Opts.ModuleFiles .push_back (std::string (Val));
1741
1742
}
1742
- Opts.ModulesEmbedFiles = Args.getAllArgValues (OPT_fmodules_embed_file_EQ);
1743
1743
Opts.AllowPCMWithCompilerErrors = Args.hasArg (OPT_fallow_pcm_with_errors);
1744
1744
1745
1745
if (Opts.ProgramAction != frontend::GenerateModule && Opts.IsSystemModule )
@@ -2574,7 +2574,6 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
2574
2574
|| Args.hasArg (OPT_fdump_record_layouts);
2575
2575
if (Opts.FastRelaxedMath )
2576
2576
Opts.setDefaultFPContractMode (LangOptions::FPM_Fast);
2577
- Opts.ModuleFeatures = Args.getAllArgValues (OPT_fmodule_feature);
2578
2577
llvm::sort (Opts.ModuleFeatures );
2579
2578
Opts.NativeHalfType |= Args.hasArg (OPT_fnative_half_type);
2580
2579
Opts.NativeHalfArgsAndReturns |= Args.hasArg (OPT_fnative_half_arguments_and_returns);
@@ -2782,20 +2781,12 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
2782
2781
// Parse -fsanitize= arguments.
2783
2782
parseSanitizerKinds (" -fsanitize=" , Args.getAllArgValues (OPT_fsanitize_EQ),
2784
2783
Diags, Opts.Sanitize );
2785
- Opts.SanitizerBlacklistFiles = Args.getAllArgValues (OPT_fsanitize_blacklist);
2786
2784
std::vector<std::string> systemBlacklists =
2787
2785
Args.getAllArgValues (OPT_fsanitize_system_blacklist);
2788
2786
Opts.SanitizerBlacklistFiles .insert (Opts.SanitizerBlacklistFiles .end (),
2789
2787
systemBlacklists.begin (),
2790
2788
systemBlacklists.end ());
2791
2789
2792
- // -fxray-{always,never}-instrument= filenames.
2793
- Opts.XRayAlwaysInstrumentFiles =
2794
- Args.getAllArgValues (OPT_fxray_always_instrument);
2795
- Opts.XRayNeverInstrumentFiles =
2796
- Args.getAllArgValues (OPT_fxray_never_instrument);
2797
- Opts.XRayAttrListFiles = Args.getAllArgValues (OPT_fxray_attr_list);
2798
-
2799
2790
if (Arg *A = Args.getLastArg (OPT_fclang_abi_compat_EQ)) {
2800
2791
Opts.setClangABICompat (LangOptions::ClangABI::Latest);
2801
2792
@@ -2970,8 +2961,6 @@ static void ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args,
2970
2961
Opts.addMacroUndef (A->getValue ());
2971
2962
}
2972
2963
2973
- Opts.MacroIncludes = Args.getAllArgValues (OPT_imacros);
2974
-
2975
2964
// Add the ordered list of -includes.
2976
2965
for (const auto *A : Args.filtered (OPT_include))
2977
2966
Opts.Includes .emplace_back (A->getValue ());
@@ -3010,8 +2999,6 @@ static void ParsePreprocessorOutputArgs(PreprocessorOutputOptions &Opts,
3010
2999
3011
3000
static void ParseTargetArgs (TargetOptions &Opts, ArgList &Args,
3012
3001
DiagnosticsEngine &Diags) {
3013
- Opts.FeaturesAsWritten = Args.getAllArgValues (OPT_target_feature);
3014
- Opts.OpenCLExtensionsAsWritten = Args.getAllArgValues (OPT_cl_ext_EQ);
3015
3002
Opts.AllowAMDGPUUnsafeFPAtomics =
3016
3003
Args.hasFlag (options::OPT_munsafe_fp_atomics,
3017
3004
options::OPT_mno_unsafe_fp_atomics, false );
0 commit comments