Lines Matching refs:Opts

966 static void GenerateAnalyzerArgs(const AnalyzerOptions &Opts,  in GenerateAnalyzerArgs()  argument
968 const AnalyzerOptions *AnalyzerOpts = &Opts; in GenerateAnalyzerArgs()
975 if (Opts.AnalysisConstraintsOpt != RangeConstraintsModel) { in GenerateAnalyzerArgs()
976 switch (Opts.AnalysisConstraintsOpt) { in GenerateAnalyzerArgs()
987 if (Opts.AnalysisDiagOpt != PD_HTML) { in GenerateAnalyzerArgs()
988 switch (Opts.AnalysisDiagOpt) { in GenerateAnalyzerArgs()
999 if (Opts.AnalysisPurgeOpt != PurgeStmt) { in GenerateAnalyzerArgs()
1000 switch (Opts.AnalysisPurgeOpt) { in GenerateAnalyzerArgs()
1011 if (Opts.InliningMode != NoRedundancy) { in GenerateAnalyzerArgs()
1012 switch (Opts.InliningMode) { in GenerateAnalyzerArgs()
1023 for (const auto &CP : Opts.CheckersAndPackages) { in GenerateAnalyzerArgs()
1034 for (const auto &C : Opts.Config) in GenerateAnalyzerArgs()
1051 static bool ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args, in ParseAnalyzerArgs() argument
1055 AnalyzerOptions *AnalyzerOpts = &Opts; in ParseAnalyzerArgs()
1078 Opts.AnalysisConstraintsOpt = Value; in ParseAnalyzerArgs()
1093 Opts.AnalysisDiagOpt = Value; in ParseAnalyzerArgs()
1108 Opts.AnalysisPurgeOpt = Value; in ParseAnalyzerArgs()
1123 Opts.InliningMode = Value; in ParseAnalyzerArgs()
1127 Opts.CheckersAndPackages.clear(); in ParseAnalyzerArgs()
1138 Opts.CheckersAndPackages.emplace_back(std::string(CheckerOrPackage), in ParseAnalyzerArgs()
1167 if (!key.contains(":") && Opts.isUnknownAnalyzerConfig(key)) { in ParseAnalyzerArgs()
1168 if (Opts.ShouldEmitErrorsOnInvalidConfigValue) in ParseAnalyzerArgs()
1174 Opts.Config[key] = std::string(val); in ParseAnalyzerArgs()
1178 if (Opts.ShouldEmitErrorsOnInvalidConfigValue) in ParseAnalyzerArgs()
1179 parseAnalyzerConfigs(Opts, &Diags); in ParseAnalyzerArgs()
1181 parseAnalyzerConfigs(Opts, nullptr); in ParseAnalyzerArgs()
1183 llvm::raw_string_ostream os(Opts.FullCompilerInvocation); in ParseAnalyzerArgs()
1447 static void setPGOUseInstrumentor(CodeGenOptions &Opts, in setPGOUseInstrumentor() argument
1467 Opts.setProfileUse(CodeGenOptions::ProfileCSIRInstr); in setPGOUseInstrumentor()
1469 Opts.setProfileUse(CodeGenOptions::ProfileIRInstr); in setPGOUseInstrumentor()
1471 Opts.setProfileUse(CodeGenOptions::ProfileClangInstr); in setPGOUseInstrumentor()
1475 PointerAuthOptions &Opts, const LangOptions &LangOpts, in setDefaultPointerAuthOptions() argument
1482 Opts.FunctionPointers = PointerAuthSchema( in setDefaultPointerAuthOptions()
1487 Opts.CXXVTablePointers = PointerAuthSchema( in setDefaultPointerAuthOptions()
1493 Opts.CXXTypeInfoVTablePointer = in setDefaultPointerAuthOptions()
1497 Opts.CXXTypeInfoVTablePointer = in setDefaultPointerAuthOptions()
1500 Opts.CXXVTTVTablePointers = in setDefaultPointerAuthOptions()
1502 Opts.CXXVirtualFunctionPointers = Opts.CXXVirtualVariadicFunctionPointers = in setDefaultPointerAuthOptions()
1504 Opts.CXXMemberFunctionPointers = in setDefaultPointerAuthOptions()
1507 Opts.ReturnAddresses = LangOpts.PointerAuthReturns; in setDefaultPointerAuthOptions()
1508 Opts.AuthTraps = LangOpts.PointerAuthAuthTraps; in setDefaultPointerAuthOptions()
1509 Opts.IndirectGotos = LangOpts.PointerAuthIndirectGotos; in setDefaultPointerAuthOptions()
1512 static void parsePointerAuthOptions(PointerAuthOptions &Opts, in parsePointerAuthOptions() argument
1520 CompilerInvocation::setDefaultPointerAuthOptions(Opts, LangOpts, Triple); in parsePointerAuthOptions()
1523 void CompilerInvocationBase::GenerateCodeGenArgs(const CodeGenOptions &Opts, in GenerateCodeGenArgs() argument
1528 const CodeGenOptions &CodeGenOpts = Opts; in GenerateCodeGenArgs()
1530 if (Opts.OptimizationLevel == 0) in GenerateCodeGenArgs()
1533 GenerateArg(Consumer, OPT_O, Twine(Opts.OptimizationLevel)); in GenerateCodeGenArgs()
1540 if (Opts.OptimizationLevel > 0) { in GenerateCodeGenArgs()
1541 if (Opts.Inlining == CodeGenOptions::NormalInlining) in GenerateCodeGenArgs()
1543 else if (Opts.Inlining == CodeGenOptions::OnlyHintInlining) in GenerateCodeGenArgs()
1545 else if (Opts.Inlining == CodeGenOptions::OnlyAlwaysInlining) in GenerateCodeGenArgs()
1549 if (Opts.DirectAccessExternalData && LangOpts->PICLevel != 0) in GenerateCodeGenArgs()
1551 else if (!Opts.DirectAccessExternalData && LangOpts->PICLevel == 0) in GenerateCodeGenArgs()
1555 switch (Opts.DebugInfo) { in GenerateCodeGenArgs()
1584 for (const auto &Prefix : Opts.DebugPrefixMap) in GenerateCodeGenArgs()
1588 for (const auto &Prefix : Opts.CoveragePrefixMap) in GenerateCodeGenArgs()
1592 if (Opts.NewStructPathTBAA) in GenerateCodeGenArgs()
1595 if (Opts.OptimizeSize == 1) in GenerateCodeGenArgs()
1597 else if (Opts.OptimizeSize == 2) in GenerateCodeGenArgs()
1605 if (Opts.UnrollLoops && Opts.OptimizationLevel <= 1) in GenerateCodeGenArgs()
1607 else if (!Opts.UnrollLoops && Opts.OptimizationLevel > 1) in GenerateCodeGenArgs()
1610 if (!Opts.BinutilsVersion.empty()) in GenerateCodeGenArgs()
1611 GenerateArg(Consumer, OPT_fbinutils_version_EQ, Opts.BinutilsVersion); in GenerateCodeGenArgs()
1613 if (Opts.DebugNameTable == in GenerateCodeGenArgs()
1616 else if (Opts.DebugNameTable == in GenerateCodeGenArgs()
1621 if (Opts.DebugTemplateAlias) in GenerateCodeGenArgs()
1624 auto TNK = Opts.getDebugSimpleTemplateNames(); in GenerateCodeGenArgs()
1634 if (Opts.TimePasses) { in GenerateCodeGenArgs()
1635 if (Opts.TimePassesPerRun) in GenerateCodeGenArgs()
1641 if (Opts.PrepareForLTO && !Opts.PrepareForThinLTO) in GenerateCodeGenArgs()
1644 if (Opts.PrepareForThinLTO) in GenerateCodeGenArgs()
1647 if (!Opts.ThinLTOIndexFile.empty()) in GenerateCodeGenArgs()
1648 GenerateArg(Consumer, OPT_fthinlto_index_EQ, Opts.ThinLTOIndexFile); in GenerateCodeGenArgs()
1650 if (Opts.SaveTempsFilePrefix == OutputFile) in GenerateCodeGenArgs()
1654 if (!Opts.MemoryProfileOutput.empty()) { in GenerateCodeGenArgs()
1655 if (Opts.MemoryProfileOutput == MemProfileBasename) { in GenerateCodeGenArgs()
1659 Opts.MemoryProfileOutput.size() - MemProfileBasename.size(); in GenerateCodeGenArgs()
1661 Opts.MemoryProfileOutput.substr(0, ArgLength)); in GenerateCodeGenArgs()
1665 if (memcmp(Opts.CoverageVersion, "408*", 4) != 0) in GenerateCodeGenArgs()
1667 StringRef(Opts.CoverageVersion, 4)); in GenerateCodeGenArgs()
1673 if (Opts.XRayInstrumentationBundle.Mask != XRayInstrKind::All) { in GenerateCodeGenArgs()
1675 serializeXRayInstrumentationBundle(Opts.XRayInstrumentationBundle); in GenerateCodeGenArgs()
1680 if (Opts.CFProtectionReturn && Opts.CFProtectionBranch) in GenerateCodeGenArgs()
1682 else if (Opts.CFProtectionReturn) in GenerateCodeGenArgs()
1684 else if (Opts.CFProtectionBranch) in GenerateCodeGenArgs()
1687 if (Opts.FunctionReturnThunks) in GenerateCodeGenArgs()
1690 for (const auto &F : Opts.LinkBitcodeFiles) { in GenerateCodeGenArgs()
1698 if (Opts.EmulatedTLS) in GenerateCodeGenArgs()
1701 if (Opts.FPDenormalMode != llvm::DenormalMode::getIEEE()) in GenerateCodeGenArgs()
1702 GenerateArg(Consumer, OPT_fdenormal_fp_math_EQ, Opts.FPDenormalMode.str()); in GenerateCodeGenArgs()
1704 if ((Opts.FPDenormalMode != Opts.FP32DenormalMode) || in GenerateCodeGenArgs()
1705 (Opts.FP32DenormalMode != llvm::DenormalMode::getIEEE())) in GenerateCodeGenArgs()
1707 Opts.FP32DenormalMode.str()); in GenerateCodeGenArgs()
1709 if (Opts.StructReturnConvention == CodeGenOptions::SRCK_OnStack) { in GenerateCodeGenArgs()
1713 } else if (Opts.StructReturnConvention == CodeGenOptions::SRCK_InRegs) { in GenerateCodeGenArgs()
1719 if (Opts.EnableAIXExtendedAltivecABI) in GenerateCodeGenArgs()
1722 if (Opts.XCOFFReadOnlyPointers) in GenerateCodeGenArgs()
1725 if (!Opts.OptRecordPasses.empty()) in GenerateCodeGenArgs()
1726 GenerateArg(Consumer, OPT_opt_record_passes, Opts.OptRecordPasses); in GenerateCodeGenArgs()
1728 if (!Opts.OptRecordFormat.empty()) in GenerateCodeGenArgs()
1729 GenerateArg(Consumer, OPT_opt_record_format, Opts.OptRecordFormat); in GenerateCodeGenArgs()
1732 Opts.OptimizationRemark); in GenerateCodeGenArgs()
1735 Opts.OptimizationRemarkMissed); in GenerateCodeGenArgs()
1738 Opts.OptimizationRemarkAnalysis); in GenerateCodeGenArgs()
1741 Opts.DiagnosticsHotnessThreshold in GenerateCodeGenArgs()
1742 ? Twine(*Opts.DiagnosticsHotnessThreshold) in GenerateCodeGenArgs()
1746 Twine(*Opts.DiagnosticsMisExpectTolerance)); in GenerateCodeGenArgs()
1748 for (StringRef Sanitizer : serializeSanitizerKinds(Opts.SanitizeRecover)) in GenerateCodeGenArgs()
1751 for (StringRef Sanitizer : serializeSanitizerKinds(Opts.SanitizeTrap)) in GenerateCodeGenArgs()
1754 if (!Opts.EmitVersionIdentMetadata) in GenerateCodeGenArgs()
1757 switch (Opts.FiniteLoops) { in GenerateCodeGenArgs()
1769 bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, in ParseCodeGenArgs() argument
1787 Opts.OptimizationLevel = OptimizationLevel; in ParseCodeGenArgs()
1791 CodeGenOptions &CodeGenOpts = Opts; in ParseCodeGenArgs()
1803 if (Opts.OptimizationLevel == 0) { in ParseCodeGenArgs()
1804 Opts.setInlining(CodeGenOptions::OnlyAlwaysInlining); in ParseCodeGenArgs()
1812 Opts.setInlining(CodeGenOptions::NormalInlining); in ParseCodeGenArgs()
1814 Opts.setInlining(CodeGenOptions::OnlyHintInlining); in ParseCodeGenArgs()
1816 Opts.setInlining(CodeGenOptions::OnlyAlwaysInlining); in ParseCodeGenArgs()
1818 Opts.setInlining(CodeGenOptions::NormalInlining); in ParseCodeGenArgs()
1823 Opts.DirectAccessExternalData = in ParseCodeGenArgs()
1843 Opts.setDebugInfo(static_cast<llvm::codegenoptions::DebugInfoKind>(Val)); in ParseCodeGenArgs()
1851 Opts.getDebugInfo() == llvm::codegenoptions::LimitedDebugInfo) in ParseCodeGenArgs()
1852 Opts.setDebugInfo(llvm::codegenoptions::DebugInfoConstructor); in ParseCodeGenArgs()
1854 Opts.getDebugInfo() == llvm::codegenoptions::DebugInfoConstructor) in ParseCodeGenArgs()
1855 Opts.setDebugInfo(llvm::codegenoptions::LimitedDebugInfo); in ParseCodeGenArgs()
1860 Opts.DebugPrefixMap.emplace_back(Split.first, Split.second); in ParseCodeGenArgs()
1865 Opts.CoveragePrefixMap.emplace_back(Split.first, Split.second); in ParseCodeGenArgs()
1873 if (Opts.OptimizationLevel > 0 && Opts.hasReducedDebugInfo() && in ParseCodeGenArgs()
1875 Opts.EmitCallSiteInfo = true; in ParseCodeGenArgs()
1877 if (!Opts.EnableDIPreservationVerify && Opts.DIBugsReportFilePath.size()) { in ParseCodeGenArgs()
1879 << Opts.DIBugsReportFilePath; in ParseCodeGenArgs()
1880 Opts.DIBugsReportFilePath = ""; in ParseCodeGenArgs()
1883 Opts.NewStructPathTBAA = !Args.hasArg(OPT_no_struct_path_tbaa) && in ParseCodeGenArgs()
1885 Opts.OptimizeSize = getOptimizationLevelSize(Args); in ParseCodeGenArgs()
1886 Opts.SimplifyLibCalls = !LangOpts->NoBuiltin; in ParseCodeGenArgs()
1887 if (Opts.SimplifyLibCalls) in ParseCodeGenArgs()
1888 Opts.NoBuiltinFuncs = LangOpts->NoBuiltinFuncs; in ParseCodeGenArgs()
1889 Opts.UnrollLoops = in ParseCodeGenArgs()
1891 (Opts.OptimizationLevel > 1)); in ParseCodeGenArgs()
1892 Opts.BinutilsVersion = in ParseCodeGenArgs()
1895 Opts.DebugTemplateAlias = Args.hasArg(OPT_gtemplate_alias); in ParseCodeGenArgs()
1897 Opts.DebugNameTable = static_cast<unsigned>( in ParseCodeGenArgs()
1908 Opts.setDebugSimpleTemplateNames( in ParseCodeGenArgs()
1915 Opts.TimePasses = true; in ParseCodeGenArgs()
1921 Opts.TimePassesPerRun = false; in ParseCodeGenArgs()
1923 Opts.TimePassesPerRun = true; in ParseCodeGenArgs()
1930 Opts.PrepareForLTO = false; in ParseCodeGenArgs()
1931 Opts.PrepareForThinLTO = false; in ParseCodeGenArgs()
1933 Opts.PrepareForLTO = true; in ParseCodeGenArgs()
1936 Opts.PrepareForThinLTO = true; in ParseCodeGenArgs()
1940 Opts.PrepareForThinLTO = true; in ParseCodeGenArgs()
1946 Opts.ThinLTOIndexFile = in ParseCodeGenArgs()
1950 Opts.SaveTempsFilePrefix = in ParseCodeGenArgs()
1961 Opts.MemoryProfileOutput = std::string(Path); in ParseCodeGenArgs()
1963 Opts.MemoryProfileOutput = MemProfileBasename; in ParseCodeGenArgs()
1965 memcpy(Opts.CoverageVersion, "408*", 4); in ParseCodeGenArgs()
1966 if (Opts.CoverageNotesFile.size() || Opts.CoverageDataFile.size()) { in ParseCodeGenArgs()
1974 memcpy(Opts.CoverageVersion, CoverageVersion.data(), 4); in ParseCodeGenArgs()
1993 Opts.CmdArgs.insert(Opts.CmdArgs.end(), ArgStr.begin(), ArgStr.end()); in ParseCodeGenArgs()
1995 Opts.CmdArgs.push_back('\0'); in ParseCodeGenArgs()
2002 Opts.XRayInstrumentationBundle.Mask = XRayInstrKind::All; in ParseCodeGenArgs()
2006 Diags, Opts.XRayInstrumentationBundle); in ParseCodeGenArgs()
2011 Opts.CFProtectionReturn = 1; in ParseCodeGenArgs()
2012 Opts.CFProtectionBranch = 1; in ParseCodeGenArgs()
2014 Opts.CFProtectionReturn = 1; in ParseCodeGenArgs()
2016 Opts.CFProtectionBranch = 1; in ParseCodeGenArgs()
2039 Opts.FunctionReturnThunks = static_cast<unsigned>(Val); in ParseCodeGenArgs()
2053 Opts.LinkBitcodeFiles.push_back(F); in ParseCodeGenArgs()
2058 Opts.FPDenormalMode = llvm::parseDenormalFPAttribute(Val); in ParseCodeGenArgs()
2059 Opts.FP32DenormalMode = Opts.FPDenormalMode; in ParseCodeGenArgs()
2060 if (!Opts.FPDenormalMode.isValid()) in ParseCodeGenArgs()
2066 Opts.FP32DenormalMode = llvm::parseDenormalFPAttribute(Val); in ParseCodeGenArgs()
2067 if (!Opts.FP32DenormalMode.isValid()) in ParseCodeGenArgs()
2085 Opts.setStructReturnConvention(CodeGenOptions::SRCK_OnStack); in ParseCodeGenArgs()
2089 Opts.setStructReturnConvention(CodeGenOptions::SRCK_InRegs); in ParseCodeGenArgs()
2109 Opts.XCOFFReadOnlyPointers = true; in ParseCodeGenArgs()
2120 if (!Opts.OptRecordFile.empty()) in ParseCodeGenArgs()
2124 Opts.OptRecordPasses = A->getValue(); in ParseCodeGenArgs()
2129 Opts.OptRecordFormat = A->getValue(); in ParseCodeGenArgs()
2133 Opts.OptimizationRemark = in ParseCodeGenArgs()
2136 Opts.OptimizationRemarkMissed = in ParseCodeGenArgs()
2139 Opts.OptimizationRemarkAnalysis = ParseOptimizationRemark( in ParseCodeGenArgs()
2142 NeedLocTracking |= Opts.OptimizationRemark.hasValidPattern() || in ParseCodeGenArgs()
2143 Opts.OptimizationRemarkMissed.hasValidPattern() || in ParseCodeGenArgs()
2144 Opts.OptimizationRemarkAnalysis.hasValidPattern(); in ParseCodeGenArgs()
2146 bool UsingSampleProfile = !Opts.SampleProfileFile.empty(); in ParseCodeGenArgs()
2148 UsingSampleProfile || !Opts.ProfileInstrumentUsePath.empty(); in ParseCodeGenArgs()
2150 if (Opts.DiagnosticsWithHotness && !UsingProfile && in ParseCodeGenArgs()
2166 Opts.DiagnosticsHotnessThreshold = *ResultOrErr; in ParseCodeGenArgs()
2167 if ((!Opts.DiagnosticsHotnessThreshold || in ParseCodeGenArgs()
2168 *Opts.DiagnosticsHotnessThreshold > 0) && in ParseCodeGenArgs()
2183 Opts.DiagnosticsMisExpectTolerance = *ResultOrErr; in ParseCodeGenArgs()
2184 if ((!Opts.DiagnosticsMisExpectTolerance || in ParseCodeGenArgs()
2185 *Opts.DiagnosticsMisExpectTolerance > 0) && in ParseCodeGenArgs()
2198 if (!Opts.StackUsageOutput.empty()) in ParseCodeGenArgs()
2204 Opts.getDebugInfo() == llvm::codegenoptions::NoDebugInfo) in ParseCodeGenArgs()
2205 Opts.setDebugInfo(llvm::codegenoptions::LocTrackingOnly); in ParseCodeGenArgs()
2211 Opts.SanitizeRecover); in ParseCodeGenArgs()
2214 Opts.SanitizeTrap); in ParseCodeGenArgs()
2216 Opts.EmitVersionIdentMetadata = Args.hasFlag(OPT_Qy, OPT_Qn, true); in ParseCodeGenArgs()
2219 parsePointerAuthOptions(Opts.PointerAuth, *LangOpts, T, Diags); in ParseCodeGenArgs()
2222 Opts.FiniteLoops = CodeGenOptions::FiniteLoopsKind::Always; in ParseCodeGenArgs()
2224 Opts.FiniteLoops = CodeGenOptions::FiniteLoopsKind::Never; in ParseCodeGenArgs()
2226 Opts.EmitIEEENaNCompliantInsts = Args.hasFlag( in ParseCodeGenArgs()
2228 if (!Opts.EmitIEEENaNCompliantInsts && !LangOptsRef.NoHonorNaNs) in ParseCodeGenArgs()
2234 static void GenerateDependencyOutputArgs(const DependencyOutputOptions &Opts, in GenerateDependencyOutputArgs() argument
2236 const DependencyOutputOptions &DependencyOutputOpts = Opts; in GenerateDependencyOutputArgs()
2242 if (Opts.ShowIncludesDest != ShowIncludesDestination::None) in GenerateDependencyOutputArgs()
2245 for (const auto &Dep : Opts.ExtraDeps) { in GenerateDependencyOutputArgs()
2265 static bool ParseDependencyOutputArgs(DependencyOutputOptions &Opts, in ParseDependencyOutputArgs() argument
2271 DependencyOutputOptions &DependencyOutputOpts = Opts; in ParseDependencyOutputArgs()
2282 Opts.ShowIncludesDest = ShowIncludesDestination::Stderr; in ParseDependencyOutputArgs()
2284 Opts.ShowIncludesDest = ShowIncludesDestination::Stdout; in ParseDependencyOutputArgs()
2286 Opts.ShowIncludesDest = ShowIncludesDestination::None; in ParseDependencyOutputArgs()
2296 Opts.ExtraDeps.emplace_back(std::string(Val), EDK_SanitizeIgnorelist); in ParseDependencyOutputArgs()
2298 if (Opts.IncludeSystemHeaders) { in ParseDependencyOutputArgs()
2302 Opts.ExtraDeps.emplace_back(std::string(Val), EDK_SanitizeIgnorelist); in ParseDependencyOutputArgs()
2309 Opts.ExtraDeps.emplace_back(Filename, EDK_ProfileList); in ParseDependencyOutputArgs()
2313 Opts.ExtraDeps.emplace_back(A->getValue(), EDK_DepFileEntry); in ParseDependencyOutputArgs()
2319 Opts.ExtraDeps.emplace_back(std::string(Val), EDK_ModuleFile); in ParseDependencyOutputArgs()
2324 if ((Opts.HeaderIncludeFormat == HIFMT_Textual && in ParseDependencyOutputArgs()
2325 Opts.HeaderIncludeFiltering != HIFIL_None) || in ParseDependencyOutputArgs()
2326 (Opts.HeaderIncludeFormat == HIFMT_JSON && in ParseDependencyOutputArgs()
2327 Opts.HeaderIncludeFiltering != HIFIL_Only_Direct_System)) in ParseDependencyOutputArgs()
2384 static void GenerateFileSystemArgs(const FileSystemOptions &Opts, in GenerateFileSystemArgs() argument
2386 const FileSystemOptions &FileSystemOpts = Opts; in GenerateFileSystemArgs()
2394 static bool ParseFileSystemArgs(FileSystemOptions &Opts, const ArgList &Args, in ParseFileSystemArgs() argument
2398 FileSystemOptions &FileSystemOpts = Opts; in ParseFileSystemArgs()
2408 static void GenerateMigratorArgs(const MigratorOptions &Opts, in GenerateMigratorArgs() argument
2410 const MigratorOptions &MigratorOpts = Opts; in GenerateMigratorArgs()
2417 static bool ParseMigratorArgs(MigratorOptions &Opts, const ArgList &Args, in ParseMigratorArgs() argument
2421 MigratorOptions &MigratorOpts = Opts; in ParseMigratorArgs()
2432 const DiagnosticOptions &Opts, ArgumentConsumer Consumer, in GenerateDiagnosticArgs() argument
2434 const DiagnosticOptions *DiagnosticOpts = &Opts; in GenerateDiagnosticArgs()
2440 if (!Opts.DiagnosticSerializationFile.empty()) in GenerateDiagnosticArgs()
2442 Opts.DiagnosticSerializationFile); in GenerateDiagnosticArgs()
2444 if (Opts.ShowColors) in GenerateDiagnosticArgs()
2447 if (Opts.VerifyDiagnostics && in GenerateDiagnosticArgs()
2448 llvm::is_contained(Opts.VerifyPrefixes, "expected")) in GenerateDiagnosticArgs()
2451 for (const auto &Prefix : Opts.VerifyPrefixes) in GenerateDiagnosticArgs()
2455 DiagnosticLevelMask VIU = Opts.getVerifyIgnoreUnexpected(); in GenerateDiagnosticArgs()
2471 for (const auto &Warning : Opts.Warnings) { in GenerateDiagnosticArgs()
2481 for (const auto &Remark : Opts.Remarks) { in GenerateDiagnosticArgs()
2517 bool clang::ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args, in ParseDiagnosticArgs() argument
2531 DiagnosticOptions *DiagnosticOpts = &Opts; in ParseDiagnosticArgs()
2538 llvm::sys::Process::UseANSIEscapeCodes(Opts.UseANSIEscapeCodes); in ParseDiagnosticArgs()
2542 Opts.DiagnosticSerializationFile = A->getValue(); in ParseDiagnosticArgs()
2543 Opts.ShowColors = parseShowColorsArgs(Args, DefaultDiagColor); in ParseDiagnosticArgs()
2545 Opts.VerifyDiagnostics = Args.hasArg(OPT_verify) || Args.hasArg(OPT_verify_EQ); in ParseDiagnosticArgs()
2546 Opts.VerifyPrefixes = Args.getAllArgValues(OPT_verify_EQ); in ParseDiagnosticArgs()
2548 Opts.VerifyPrefixes.push_back("expected"); in ParseDiagnosticArgs()
2551 if (!checkVerifyPrefixes(Opts.VerifyPrefixes, *Diags)) in ParseDiagnosticArgs()
2552 Opts.VerifyDiagnostics = false; in ParseDiagnosticArgs()
2554 llvm::sort(Opts.VerifyPrefixes); in ParseDiagnosticArgs()
2561 Opts.setVerifyIgnoreUnexpected(DiagMask); in ParseDiagnosticArgs()
2562 if (Opts.TabStop == 0 || Opts.TabStop > DiagnosticOptions::MaxTabStop) { in ParseDiagnosticArgs()
2564 << Opts.TabStop << DiagnosticOptions::DefaultTabStop; in ParseDiagnosticArgs()
2565 Opts.TabStop = DiagnosticOptions::DefaultTabStop; in ParseDiagnosticArgs()
2568 addDiagnosticArgs(Args, OPT_W_Group, OPT_W_value_Group, Opts.Warnings); in ParseDiagnosticArgs()
2569 addDiagnosticArgs(Args, OPT_R_Group, OPT_R_value_Group, Opts.Remarks); in ParseDiagnosticArgs()
2678 static void GenerateFrontendArgs(const FrontendOptions &Opts, in GenerateFrontendArgs() argument
2680 const FrontendOptions &FrontendOpts = Opts; in GenerateFrontendArgs()
2687 getProgramActionOpt(Opts.ProgramAction); in GenerateFrontendArgs()
2696 assert(Opts.ProgramAction == frontend::PluginAction && in GenerateFrontendArgs()
2699 GenerateArg(Consumer, OPT_plugin, Opts.ActionName); in GenerateFrontendArgs()
2704 if (Opts.ProgramAction == frontend::ASTDump) { in GenerateFrontendArgs()
2709 if (Opts.ASTDumpFormat != ADOF_Default) { in GenerateFrontendArgs()
2711 switch (Opts.ASTDumpFormat) { in GenerateFrontendArgs()
2719 if (Opts.ASTDumpAll) in GenerateFrontendArgs()
2721 if (Opts.ASTDumpDecls) in GenerateFrontendArgs()
2724 if (Opts.ASTDumpAll) in GenerateFrontendArgs()
2726 if (Opts.ASTDumpDecls) in GenerateFrontendArgs()
2732 if (Opts.ProgramAction == frontend::FixIt && !Opts.FixItSuffix.empty()) { in GenerateFrontendArgs()
2734 GenerateArg(Consumer, OPT_fixit_EQ, Opts.FixItSuffix); in GenerateFrontendArgs()
2740 for (const auto &PluginArgs : Opts.PluginArgs) { in GenerateFrontendArgs()
2748 for (const auto &Ext : Opts.ModuleFileExtensions) in GenerateFrontendArgs()
2752 if (!Opts.CodeCompletionAt.FileName.empty()) in GenerateFrontendArgs()
2754 Opts.CodeCompletionAt.ToString()); in GenerateFrontendArgs()
2756 for (const auto &Plugin : Opts.Plugins) in GenerateFrontendArgs()
2761 for (const auto &ModuleFile : Opts.ModuleFiles) in GenerateFrontendArgs()
2764 if (Opts.AuxTargetCPU) in GenerateFrontendArgs()
2765 GenerateArg(Consumer, OPT_aux_target_cpu, *Opts.AuxTargetCPU); in GenerateFrontendArgs()
2767 if (Opts.AuxTargetFeatures) in GenerateFrontendArgs()
2768 for (const auto &Feature : *Opts.AuxTargetFeatures) in GenerateFrontendArgs()
2772 StringRef Preprocessed = Opts.DashX.isPreprocessed() ? "-cpp-output" : ""; in GenerateFrontendArgs()
2774 Opts.DashX.getFormat() == InputKind::ModuleMap ? "-module-map" : ""; in GenerateFrontendArgs()
2776 switch (Opts.DashX.getHeaderUnitKind()) { in GenerateFrontendArgs()
2792 switch (Opts.DashX.getLanguage()) { in GenerateFrontendArgs()
2824 assert(Opts.DashX.getFormat() == InputKind::Precompiled && in GenerateFrontendArgs()
2844 for (const auto &Input : Opts.Inputs) in GenerateFrontendArgs()
2848 static bool ParseFrontendArgs(FrontendOptions &Opts, ArgList &Args, in ParseFrontendArgs() argument
2852 FrontendOptions &FrontendOpts = Opts; in ParseFrontendArgs()
2859 Opts.ProgramAction = frontend::ParseSyntaxOnly; in ParseFrontendArgs()
2873 Opts.ASTDumpFormat = static_cast<ASTDumpOutputFormat>(Val); in ParseFrontendArgs()
2877 Opts.ASTDumpFormat = ADOF_Default; in ParseFrontendArgs()
2882 Opts.FixItSuffix = A->getValue(); in ParseFrontendArgs()
2911 Opts.ProgramAction = *ProgramAction; in ParseFrontendArgs()
2939 Opts.Plugins.emplace_back(A->getValue(0)); in ParseFrontendArgs()
2940 Opts.ProgramAction = frontend::PluginAction; in ParseFrontendArgs()
2941 Opts.ActionName = A->getValue(); in ParseFrontendArgs()
2944 Opts.PluginArgs[AA->getValue(0)].emplace_back(AA->getValue(1)); in ParseFrontendArgs()
2961 Opts.ModuleFileExtensions.push_back( in ParseFrontendArgs()
2967 Opts.CodeCompletionAt = in ParseFrontendArgs()
2969 if (Opts.CodeCompletionAt.FileName.empty()) in ParseFrontendArgs()
2974 Opts.Plugins = Args.getAllArgValues(OPT_load); in ParseFrontendArgs()
2975 Opts.ASTDumpDecls = Args.hasArg(OPT_ast_dump, OPT_ast_dump_EQ); in ParseFrontendArgs()
2976 Opts.ASTDumpAll = Args.hasArg(OPT_ast_dump_all, OPT_ast_dump_all_EQ); in ParseFrontendArgs()
2981 Opts.ModuleFiles.push_back(std::string(Val)); in ParseFrontendArgs()
2984 if (Opts.ProgramAction != frontend::GenerateModule && Opts.IsSystemModule) in ParseFrontendArgs()
2988 Opts.UseClangIRPipeline = true; in ParseFrontendArgs()
2991 Opts.AuxTargetCPU = std::string(Args.getLastArgValue(OPT_aux_target_cpu)); in ParseFrontendArgs()
2993 Opts.AuxTargetFeatures = Args.getAllArgValues(OPT_aux_target_feature); in ParseFrontendArgs()
2995 if (Opts.ARCMTAction != FrontendOptions::ARCMT_None && in ParseFrontendArgs()
2996 Opts.ObjCMTAction != FrontendOptions::ObjCMT_None) { in ParseFrontendArgs()
3085 Opts.Inputs.clear(); in ParseFrontendArgs()
3109 if (Opts.ProgramAction == frontend::GenerateModule && in ParseFrontendArgs()
3112 IsSystem = Opts.IsSystemModule; in ParseFrontendArgs()
3115 Opts.Inputs.emplace_back(std::move(Inputs[i]), IK, IsSystem); in ParseFrontendArgs()
3118 Opts.DashX = DashX; in ParseFrontendArgs()
3130 static void GenerateHeaderSearchArgs(const HeaderSearchOptions &Opts, in GenerateHeaderSearchArgs() argument
3132 const HeaderSearchOptions *HeaderSearchOpts = &Opts; in GenerateHeaderSearchArgs()
3138 if (Opts.UseLibcxx) in GenerateHeaderSearchArgs()
3141 if (!Opts.ModuleCachePath.empty()) in GenerateHeaderSearchArgs()
3142 GenerateArg(Consumer, OPT_fmodules_cache_path, Opts.ModuleCachePath); in GenerateHeaderSearchArgs()
3144 for (const auto &File : Opts.PrebuiltModuleFiles) in GenerateHeaderSearchArgs()
3147 for (const auto &Path : Opts.PrebuiltModulePaths) in GenerateHeaderSearchArgs()
3150 for (const auto &Macro : Opts.ModulesIgnoreMacros) in GenerateHeaderSearchArgs()
3162 auto It = Opts.UserEntries.begin(); in GenerateHeaderSearchArgs()
3163 auto End = Opts.UserEntries.end(); in GenerateHeaderSearchArgs()
3240 for (const auto &P : Opts.SystemHeaderPrefixes) { in GenerateHeaderSearchArgs()
3246 for (const std::string &F : Opts.VFSOverlayFiles) in GenerateHeaderSearchArgs()
3250 static bool ParseHeaderSearchArgs(HeaderSearchOptions &Opts, ArgList &Args, in ParseHeaderSearchArgs() argument
3255 HeaderSearchOptions *HeaderSearchOpts = &Opts; in ParseHeaderSearchArgs()
3263 Opts.UseLibcxx = (strcmp(A->getValue(), "libc++") == 0); in ParseHeaderSearchArgs()
3274 Opts.ModuleCachePath = std::string(P); in ParseHeaderSearchArgs()
3281 Opts.PrebuiltModuleFiles.insert_or_assign( in ParseHeaderSearchArgs()
3286 Opts.AddPrebuiltModulePath(A->getValue()); in ParseHeaderSearchArgs()
3290 Opts.ModulesIgnoreMacros.insert( in ParseHeaderSearchArgs()
3302 &Opts](const llvm::opt::Arg *A, in ParseHeaderSearchArgs()
3307 llvm::sys::path::append(Buffer, Opts.Sysroot, in ParseHeaderSearchArgs()
3325 Opts.AddPath(PrefixHeaderPath(A, IsFramework), Group, IsFramework, in ParseHeaderSearchArgs()
3337 Opts.AddPath(Prefix.str() + A->getValue(), frontend::After, false, true); in ParseHeaderSearchArgs()
3339 Opts.AddPath(Prefix.str() + A->getValue(), frontend::Angled, false, true); in ParseHeaderSearchArgs()
3343 Opts.AddPath(PrefixHeaderPath(A), frontend::After, false, true); in ParseHeaderSearchArgs()
3345 Opts.AddPath(PrefixHeaderPath(A), frontend::Quoted, false, true); in ParseHeaderSearchArgs()
3349 Opts.AddPath(A->getValue(), frontend::System, false, in ParseHeaderSearchArgs()
3353 Opts.AddPath(PrefixHeaderPath(A), frontend::System, false, true); in ParseHeaderSearchArgs()
3356 Opts.AddPath(A->getValue(), frontend::System, true, true); in ParseHeaderSearchArgs()
3358 Opts.AddPath(A->getValue(), frontend::System, /*IsFramework=*/true, in ParseHeaderSearchArgs()
3363 Opts.AddPath(A->getValue(), frontend::CSystem, false, true); in ParseHeaderSearchArgs()
3365 Opts.AddPath(A->getValue(), frontend::CXXSystem, false, true); in ParseHeaderSearchArgs()
3367 Opts.AddPath(A->getValue(), frontend::ObjCSystem, false,true); in ParseHeaderSearchArgs()
3369 Opts.AddPath(A->getValue(), frontend::ObjCXXSystem, false, true); in ParseHeaderSearchArgs()
3377 Opts.AddPath(A->getValue(), Group, false, true); in ParseHeaderSearchArgs()
3383 Opts.AddSystemHeaderPrefix( in ParseHeaderSearchArgs()
3387 Opts.AddVFSOverlayFile(A->getValue()); in ParseHeaderSearchArgs()
3392 static void GenerateAPINotesArgs(const APINotesOptions &Opts, in GenerateAPINotesArgs() argument
3394 if (!Opts.SwiftVersion.empty()) in GenerateAPINotesArgs()
3396 Opts.SwiftVersion.getAsString()); in GenerateAPINotesArgs()
3398 for (const auto &Path : Opts.ModuleSearchPaths) in GenerateAPINotesArgs()
3402 static void ParseAPINotesArgs(APINotesOptions &Opts, ArgList &Args, in ParseAPINotesArgs() argument
3405 if (Opts.SwiftVersion.tryParse(A->getValue())) in ParseAPINotesArgs()
3410 Opts.ModuleSearchPaths.push_back(A->getValue()); in ParseAPINotesArgs()
3413 static void GeneratePointerAuthArgs(const LangOptions &Opts, in GeneratePointerAuthArgs() argument
3415 if (Opts.PointerAuthIntrinsics) in GeneratePointerAuthArgs()
3417 if (Opts.PointerAuthCalls) in GeneratePointerAuthArgs()
3419 if (Opts.PointerAuthReturns) in GeneratePointerAuthArgs()
3421 if (Opts.PointerAuthIndirectGotos) in GeneratePointerAuthArgs()
3423 if (Opts.PointerAuthAuthTraps) in GeneratePointerAuthArgs()
3425 if (Opts.PointerAuthVTPtrAddressDiscrimination) in GeneratePointerAuthArgs()
3427 if (Opts.PointerAuthVTPtrTypeDiscrimination) in GeneratePointerAuthArgs()
3429 if (Opts.PointerAuthTypeInfoVTPtrDiscrimination) in GeneratePointerAuthArgs()
3432 if (Opts.PointerAuthInitFini) in GeneratePointerAuthArgs()
3434 if (Opts.PointerAuthFunctionTypeDiscrimination) in GeneratePointerAuthArgs()
3438 static void ParsePointerAuthArgs(LangOptions &Opts, ArgList &Args, in ParsePointerAuthArgs() argument
3440 Opts.PointerAuthIntrinsics = Args.hasArg(OPT_fptrauth_intrinsics); in ParsePointerAuthArgs()
3441 Opts.PointerAuthCalls = Args.hasArg(OPT_fptrauth_calls); in ParsePointerAuthArgs()
3442 Opts.PointerAuthReturns = Args.hasArg(OPT_fptrauth_returns); in ParsePointerAuthArgs()
3443 Opts.PointerAuthIndirectGotos = Args.hasArg(OPT_fptrauth_indirect_gotos); in ParsePointerAuthArgs()
3444 Opts.PointerAuthAuthTraps = Args.hasArg(OPT_fptrauth_auth_traps); in ParsePointerAuthArgs()
3445 Opts.PointerAuthVTPtrAddressDiscrimination = in ParsePointerAuthArgs()
3447 Opts.PointerAuthVTPtrTypeDiscrimination = in ParsePointerAuthArgs()
3449 Opts.PointerAuthTypeInfoVTPtrDiscrimination = in ParsePointerAuthArgs()
3452 Opts.PointerAuthInitFini = Args.hasArg(OPT_fptrauth_init_fini); in ParsePointerAuthArgs()
3453 Opts.PointerAuthFunctionTypeDiscrimination = in ParsePointerAuthArgs()
3541 void CompilerInvocationBase::GenerateLangArgs(const LangOptions &Opts, in GenerateLangArgs() argument
3548 if (Opts.ObjCAutoRefCount) in GenerateLangArgs()
3550 if (Opts.PICLevel != 0) in GenerateLangArgs()
3551 GenerateArg(Consumer, OPT_pic_level, Twine(Opts.PICLevel)); in GenerateLangArgs()
3552 if (Opts.PIE) in GenerateLangArgs()
3554 for (StringRef Sanitizer : serializeSanitizerKinds(Opts.Sanitize)) in GenerateLangArgs()
3561 switch (Opts.LangStd) { in GenerateLangArgs()
3576 auto LangStandard = LangStandard::getLangStandardForKind(Opts.LangStd); in GenerateLangArgs()
3579 if (Opts.IncludeDefaultHeader) in GenerateLangArgs()
3581 if (Opts.DeclareOpenCLBuiltins) in GenerateLangArgs()
3584 const LangOptions *LangOpts = &Opts; in GenerateLangArgs()
3593 if (Opts.ObjC) { in GenerateLangArgs()
3594 GenerateArg(Consumer, OPT_fobjc_runtime_EQ, Opts.ObjCRuntime.getAsString()); in GenerateLangArgs()
3596 if (Opts.GC == LangOptions::GCOnly) in GenerateLangArgs()
3598 else if (Opts.GC == LangOptions::HybridGC) in GenerateLangArgs()
3600 else if (Opts.ObjCAutoRefCount == 1) in GenerateLangArgs()
3603 if (Opts.ObjCWeakRuntime) in GenerateLangArgs()
3606 if (Opts.ObjCWeak) in GenerateLangArgs()
3609 if (Opts.ObjCSubscriptingLegacyRuntime) in GenerateLangArgs()
3613 if (Opts.GNUCVersion != 0) { in GenerateLangArgs()
3614 unsigned Major = Opts.GNUCVersion / 100 / 100; in GenerateLangArgs()
3615 unsigned Minor = (Opts.GNUCVersion / 100) % 100; in GenerateLangArgs()
3616 unsigned Patch = Opts.GNUCVersion % 100; in GenerateLangArgs()
3621 if (Opts.IgnoreXCOFFVisibility) in GenerateLangArgs()
3624 if (Opts.SignedOverflowBehavior == LangOptions::SOB_Trapping) { in GenerateLangArgs()
3626 GenerateArg(Consumer, OPT_ftrapv_handler, Opts.OverflowHandler); in GenerateLangArgs()
3627 } else if (Opts.SignedOverflowBehavior == LangOptions::SOB_Defined) { in GenerateLangArgs()
3631 if (Opts.MSCompatibilityVersion != 0) { in GenerateLangArgs()
3632 unsigned Major = Opts.MSCompatibilityVersion / 10000000; in GenerateLangArgs()
3633 unsigned Minor = (Opts.MSCompatibilityVersion / 100000) % 100; in GenerateLangArgs()
3634 unsigned Subminor = Opts.MSCompatibilityVersion % 100000; in GenerateLangArgs()
3639 if ((!Opts.GNUMode && !Opts.MSVCCompat && !Opts.CPlusPlus17 && !Opts.C23) || in GenerateLangArgs()
3641 if (!Opts.Trigraphs) in GenerateLangArgs()
3644 if (Opts.Trigraphs) in GenerateLangArgs()
3648 if (Opts.Blocks && !(Opts.OpenCL && Opts.OpenCLVersion == 200)) in GenerateLangArgs()
3651 if (Opts.ConvergentFunctions && in GenerateLangArgs()
3652 !(Opts.OpenCL || (Opts.CUDA && Opts.CUDAIsDevice) || Opts.SYCLIsDevice || in GenerateLangArgs()
3653 Opts.HLSL)) in GenerateLangArgs()
3656 if (Opts.NoBuiltin && !Opts.Freestanding) in GenerateLangArgs()
3659 if (!Opts.NoBuiltin) in GenerateLangArgs()
3660 for (const auto &Func : Opts.NoBuiltinFuncs) in GenerateLangArgs()
3663 if (Opts.LongDoubleSize == 128) in GenerateLangArgs()
3665 else if (Opts.LongDoubleSize == 64) in GenerateLangArgs()
3667 else if (Opts.LongDoubleSize == 80) in GenerateLangArgs()
3674 if (Opts.OpenMP && !Opts.OpenMPSimd) { in GenerateLangArgs()
3677 if (Opts.OpenMP != 51) in GenerateLangArgs()
3678 GenerateArg(Consumer, OPT_fopenmp_version_EQ, Twine(Opts.OpenMP)); in GenerateLangArgs()
3680 if (!Opts.OpenMPUseTLS) in GenerateLangArgs()
3683 if (Opts.OpenMPIsTargetDevice) in GenerateLangArgs()
3686 if (Opts.OpenMPIRBuilder) in GenerateLangArgs()
3690 if (Opts.OpenMPSimd) { in GenerateLangArgs()
3693 if (Opts.OpenMP != 51) in GenerateLangArgs()
3694 GenerateArg(Consumer, OPT_fopenmp_version_EQ, Twine(Opts.OpenMP)); in GenerateLangArgs()
3697 if (Opts.OpenMPThreadSubscription) in GenerateLangArgs()
3700 if (Opts.OpenMPTeamSubscription) in GenerateLangArgs()
3703 if (Opts.OpenMPTargetDebug != 0) in GenerateLangArgs()
3705 Twine(Opts.OpenMPTargetDebug)); in GenerateLangArgs()
3707 if (Opts.OpenMPCUDANumSMs != 0) in GenerateLangArgs()
3709 Twine(Opts.OpenMPCUDANumSMs)); in GenerateLangArgs()
3711 if (Opts.OpenMPCUDABlocksPerSM != 0) in GenerateLangArgs()
3713 Twine(Opts.OpenMPCUDABlocksPerSM)); in GenerateLangArgs()
3715 if (Opts.OpenMPCUDAReductionBufNum != 1024) in GenerateLangArgs()
3717 Twine(Opts.OpenMPCUDAReductionBufNum)); in GenerateLangArgs()
3719 if (!Opts.OMPTargetTriples.empty()) { in GenerateLangArgs()
3723 Opts.OMPTargetTriples, OS, in GenerateLangArgs()
3728 if (!Opts.OMPHostIRFile.empty()) in GenerateLangArgs()
3729 GenerateArg(Consumer, OPT_fopenmp_host_ir_file_path, Opts.OMPHostIRFile); in GenerateLangArgs()
3731 if (Opts.OpenMPCUDAMode) in GenerateLangArgs()
3734 if (Opts.OpenACC) { in GenerateLangArgs()
3736 if (!Opts.OpenACCMacroOverride.empty()) in GenerateLangArgs()
3738 Opts.OpenACCMacroOverride); in GenerateLangArgs()
3744 if (Opts.DefaultFPContractMode == LangOptions::FPM_Fast) in GenerateLangArgs()
3746 else if (Opts.DefaultFPContractMode == LangOptions::FPM_On) in GenerateLangArgs()
3748 else if (Opts.DefaultFPContractMode == LangOptions::FPM_Off) in GenerateLangArgs()
3750 else if (Opts.DefaultFPContractMode == LangOptions::FPM_FastHonorPragmas) in GenerateLangArgs()
3753 for (StringRef Sanitizer : serializeSanitizerKinds(Opts.Sanitize)) in GenerateLangArgs()
3757 for (const std::string &F : Opts.NoSanitizeFiles) in GenerateLangArgs()
3760 switch (Opts.getClangABICompat()) { in GenerateLangArgs()
3798 if (Opts.getSignReturnAddressScope() == in GenerateLangArgs()
3801 else if (Opts.getSignReturnAddressScope() == in GenerateLangArgs()
3805 if (Opts.getSignReturnAddressKey() == in GenerateLangArgs()
3809 if (Opts.CXXABI) in GenerateLangArgs()
3811 TargetCXXABI::getSpelling(*Opts.CXXABI)); in GenerateLangArgs()
3813 if (Opts.RelativeCXXABIVTables) in GenerateLangArgs()
3818 if (Opts.UseTargetPathSeparator) in GenerateLangArgs()
3823 for (const auto &MP : Opts.MacroPrefixMap) in GenerateLangArgs()
3826 if (!Opts.RandstructSeed.empty()) in GenerateLangArgs()
3827 GenerateArg(Consumer, OPT_frandomize_layout_seed_EQ, Opts.RandstructSeed); in GenerateLangArgs()
3830 bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, in ParseLangArgs() argument
3843 Opts.ObjCAutoRefCount = 1; in ParseLangArgs()
3846 Opts.PICLevel = getLastArgIntValue(Args, OPT_pic_level, 0, Diags); in ParseLangArgs()
3847 Opts.PIE = Args.hasArg(OPT_pic_is_pie); in ParseLangArgs()
3849 Diags, Opts.Sanitize); in ParseLangArgs()
3923 Opts.IncludeDefaultHeader = Args.hasArg(OPT_finclude_default_header); in ParseLangArgs()
3924 Opts.DeclareOpenCLBuiltins = Args.hasArg(OPT_fdeclare_opencl_builtins); in ParseLangArgs()
3926 LangOptions::setLangDefaults(Opts, IK.getLanguage(), T, Includes, LangStd); in ParseLangArgs()
3930 LangOptions *LangOpts = &Opts; in ParseLangArgs()
3940 Opts.CFProtectionBranch = 1; in ParseLangArgs()
3951 Opts.setSYCLVersion(LangOptions::SYCL_Default); in ParseLangArgs()
3954 if (Opts.ObjC) { in ParseLangArgs()
3957 if (Opts.ObjCRuntime.tryParse(value)) in ParseLangArgs()
3962 Opts.setGC(LangOptions::GCOnly); in ParseLangArgs()
3964 Opts.setGC(LangOptions::HybridGC); in ParseLangArgs()
3966 Opts.ObjCAutoRefCount = 1; in ParseLangArgs()
3967 if (!Opts.ObjCRuntime.allowsARC()) in ParseLangArgs()
3976 Opts.ObjCWeakRuntime = 1; in ParseLangArgs()
3978 Opts.ObjCWeakRuntime = Opts.ObjCRuntime.allowsWeak(); in ParseLangArgs()
3984 assert(!Opts.ObjCWeak); in ParseLangArgs()
3985 } else if (Opts.getGC() != LangOptions::NonGC) { in ParseLangArgs()
3987 } else if (!Opts.ObjCWeakRuntime) { in ParseLangArgs()
3990 Opts.ObjCWeak = 1; in ParseLangArgs()
3992 } else if (Opts.ObjCAutoRefCount) { in ParseLangArgs()
3993 Opts.ObjCWeak = Opts.ObjCWeakRuntime; in ParseLangArgs()
3997 Opts.ObjCSubscriptingLegacyRuntime = in ParseLangArgs()
3998 (Opts.ObjCRuntime.getKind() == ObjCRuntime::FragileMacOSX); in ParseLangArgs()
4013 Opts.GNUCVersion = Major * 100 * 100 + Minor * 100 + Patch; in ParseLangArgs()
4017 Opts.IgnoreXCOFFVisibility = 1; in ParseLangArgs()
4020 Opts.setSignedOverflowBehavior(LangOptions::SOB_Trapping); in ParseLangArgs()
4022 Opts.OverflowHandler = in ParseLangArgs()
4026 Opts.setSignedOverflowBehavior(LangOptions::SOB_Defined); in ParseLangArgs()
4028 Opts.MSCompatibilityVersion = 0; in ParseLangArgs()
4034 Opts.MSCompatibilityVersion = VT.getMajor() * 10000000 + in ParseLangArgs()
4043 Opts.Trigraphs = in ParseLangArgs()
4044 (!Opts.GNUMode && !Opts.MSVCCompat && !Opts.CPlusPlus17 && !Opts.C23) || in ParseLangArgs()
4046 Opts.Trigraphs = in ParseLangArgs()
4047 Args.hasFlag(OPT_ftrigraphs, OPT_fno_trigraphs, Opts.Trigraphs); in ParseLangArgs()
4049 Opts.Blocks = Args.hasArg(OPT_fblocks) || (Opts.OpenCL in ParseLangArgs()
4050 && Opts.OpenCLVersion == 200); in ParseLangArgs()
4052 Opts.ConvergentFunctions = Args.hasArg(OPT_fconvergent_functions) || in ParseLangArgs()
4053 Opts.OpenCL || (Opts.CUDA && Opts.CUDAIsDevice) || in ParseLangArgs()
4054 Opts.SYCLIsDevice || Opts.HLSL; in ParseLangArgs()
4056 Opts.NoBuiltin = Args.hasArg(OPT_fno_builtin) || Opts.Freestanding; in ParseLangArgs()
4057 if (!Opts.NoBuiltin) in ParseLangArgs()
4058 getAllNoBuiltinFuncValues(Args, Opts.NoBuiltinFuncs); in ParseLangArgs()
4061 Opts.LongDoubleSize = 64; in ParseLangArgs()
4063 Opts.LongDoubleSize = 80; in ParseLangArgs()
4065 Opts.LongDoubleSize = 128; in ParseLangArgs()
4067 Opts.LongDoubleSize = 0; in ParseLangArgs()
4069 if (Opts.FastRelaxedMath || Opts.CLUnsafeMath) in ParseLangArgs()
4070 Opts.setDefaultFPContractMode(LangOptions::FPM_Fast); in ParseLangArgs()
4072 llvm::sort(Opts.ModuleFeatures); in ParseLangArgs()
4076 if (Opts.getDefaultCallingConv() != LangOptions::DCC_None) in ParseLangArgs()
4082 Opts.setDefaultCallingConv(LangOptions::DCC_StdCall); in ParseLangArgs()
4085 Opts.setDefaultCallingConv(LangOptions::DCC_RtdCall); in ParseLangArgs()
4095 Opts.OpenMP = Args.hasArg(OPT_fopenmp) ? 51 : 0; in ParseLangArgs()
4100 Opts.OpenMPSimd = !Opts.OpenMP && IsSimdSpecified; in ParseLangArgs()
4101 Opts.OpenMPUseTLS = in ParseLangArgs()
4102 Opts.OpenMP && !Args.hasArg(options::OPT_fnoopenmp_use_tls); in ParseLangArgs()
4103 Opts.OpenMPIsTargetDevice = in ParseLangArgs()
4104 Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_is_target_device); in ParseLangArgs()
4105 Opts.OpenMPIRBuilder = in ParseLangArgs()
4106 Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_enable_irbuilder); in ParseLangArgs()
4108 Opts.OpenMPIsTargetDevice || Args.hasArg(options::OPT_fopenmp_targets_EQ); in ParseLangArgs()
4110 Opts.ConvergentFunctions = in ParseLangArgs()
4111 Opts.ConvergentFunctions || Opts.OpenMPIsTargetDevice; in ParseLangArgs()
4113 if (Opts.OpenMP || Opts.OpenMPSimd) { in ParseLangArgs()
4116 (IsSimdSpecified || IsTargetSpecified) ? 51 : Opts.OpenMP, Diags)) in ParseLangArgs()
4117 Opts.OpenMP = Version; in ParseLangArgs()
4120 if (!Opts.OpenMPIsTargetDevice) { in ParseLangArgs()
4135 if ((Opts.OpenMPIsTargetDevice && (T.isNVPTX() || T.isAMDGCN())) || in ParseLangArgs()
4136 Opts.OpenCLCPlusPlus) { in ParseLangArgs()
4138 Opts.Exceptions = 0; in ParseLangArgs()
4139 Opts.CXXExceptions = 0; in ParseLangArgs()
4141 if (Opts.OpenMPIsTargetDevice && T.isNVPTX()) { in ParseLangArgs()
4142 Opts.OpenMPCUDANumSMs = in ParseLangArgs()
4144 Opts.OpenMPCUDANumSMs, Diags); in ParseLangArgs()
4145 Opts.OpenMPCUDABlocksPerSM = in ParseLangArgs()
4147 Opts.OpenMPCUDABlocksPerSM, Diags); in ParseLangArgs()
4148 Opts.OpenMPCUDAReductionBufNum = getLastArgIntValue( in ParseLangArgs()
4150 Opts.OpenMPCUDAReductionBufNum, Diags); in ParseLangArgs()
4155 if (Opts.OpenMPIsTargetDevice && (Args.hasArg(OPT_fopenmp_target_debug) || in ParseLangArgs()
4157 Opts.OpenMPTargetDebug = getLastArgIntValue( in ParseLangArgs()
4158 Args, OPT_fopenmp_target_debug_EQ, Opts.OpenMPTargetDebug, Diags); in ParseLangArgs()
4159 if (!Opts.OpenMPTargetDebug && Args.hasArg(OPT_fopenmp_target_debug)) in ParseLangArgs()
4160 Opts.OpenMPTargetDebug = 1; in ParseLangArgs()
4163 if (Opts.OpenMPIsTargetDevice) { in ParseLangArgs()
4165 Opts.OpenMPTeamSubscription = true; in ParseLangArgs()
4167 Opts.OpenMPThreadSubscription = true; in ParseLangArgs()
4198 Opts.OMPTargetTriples.push_back(TT); in ParseLangArgs()
4205 Opts.OMPHostIRFile = A->getValue(); in ParseLangArgs()
4206 if (!llvm::sys::fs::exists(Opts.OMPHostIRFile)) in ParseLangArgs()
4208 << Opts.OMPHostIRFile; in ParseLangArgs()
4212 Opts.OpenMPCUDAMode = Opts.OpenMPIsTargetDevice && in ParseLangArgs()
4218 Opts.OpenACC = true; in ParseLangArgs()
4221 Opts.OpenACCMacroOverride = A->getValue(); in ParseLangArgs()
4227 Opts.Optimize = Opt != 0; in ParseLangArgs()
4228 Opts.OptimizeSize = OptSize != 0; in ParseLangArgs()
4233 Opts.NoInlineDefine = !Opts.Optimize; in ParseLangArgs()
4238 Opts.NoInlineDefine = true; in ParseLangArgs()
4243 Opts.setDefaultFPContractMode(LangOptions::FPM_Fast); in ParseLangArgs()
4245 Opts.setDefaultFPContractMode(LangOptions::FPM_On); in ParseLangArgs()
4247 Opts.setDefaultFPContractMode(LangOptions::FPM_Off); in ParseLangArgs()
4249 Opts.setDefaultFPContractMode(LangOptions::FPM_FastHonorPragmas); in ParseLangArgs()
4256 Diags, Opts.Sanitize); in ParseLangArgs()
4257 Opts.NoSanitizeFiles = Args.getAllArgValues(OPT_fsanitize_ignorelist_EQ); in ParseLangArgs()
4260 Opts.NoSanitizeFiles.insert(Opts.NoSanitizeFiles.end(), in ParseLangArgs()
4265 Opts.setClangABICompat(LangOptions::ClangABI::Latest); in ParseLangArgs()
4282 Opts.setClangABICompat(LangOptions::ClangABI::Ver3_8); in ParseLangArgs()
4284 Opts.setClangABICompat(LangOptions::ClangABI::Ver4); in ParseLangArgs()
4286 Opts.setClangABICompat(LangOptions::ClangABI::Ver6); in ParseLangArgs()
4288 Opts.setClangABICompat(LangOptions::ClangABI::Ver7); in ParseLangArgs()
4290 Opts.setClangABICompat(LangOptions::ClangABI::Ver9); in ParseLangArgs()
4292 Opts.setClangABICompat(LangOptions::ClangABI::Ver11); in ParseLangArgs()
4294 Opts.setClangABICompat(LangOptions::ClangABI::Ver12); in ParseLangArgs()
4296 Opts.setClangABICompat(LangOptions::ClangABI::Ver14); in ParseLangArgs()
4298 Opts.setClangABICompat(LangOptions::ClangABI::Ver15); in ParseLangArgs()
4300 Opts.setClangABICompat(LangOptions::ClangABI::Ver17); in ParseLangArgs()
4302 Opts.setClangABICompat(LangOptions::ClangABI::Ver18); in ParseLangArgs()
4313 Opts.setSignReturnAddressScope( in ParseLangArgs()
4316 Opts.setSignReturnAddressScope( in ParseLangArgs()
4319 Opts.setSignReturnAddressScope( in ParseLangArgs()
4329 Opts.setSignReturnAddressKey( in ParseLangArgs()
4332 Opts.setSignReturnAddressKey( in ParseLangArgs()
4351 Opts.CXXABI = Kind; in ParseLangArgs()
4355 Opts.RelativeCXXABIVTables = in ParseLangArgs()
4362 Opts.OmitVTableRTTI = in ParseLangArgs()
4365 if (Opts.OmitVTableRTTI && HasRTTI) in ParseLangArgs()
4370 Opts.MacroPrefixMap.insert( in ParseLangArgs()
4374 Opts.UseTargetPathSeparator = in ParseLangArgs()
4394 std::getline(SeedFile, Opts.RandstructSeed); in ParseLangArgs()
4398 Opts.RandstructSeed = A->getValue(0); in ParseLangArgs()
4401 if (Opts.HLSL) { in ParseLangArgs()
4431 LangStandard::getLangStandardForKind(Opts.LangStd); in ParseLangArgs()
4432 if (!(Opts.LangStd >= LangStandard::lang_hlsl2018 && in ParseLangArgs()
4445 LangStandard::getLangStandardForKind(Opts.LangStd); in ParseLangArgs()
4446 if (!(Opts.LangStd >= LangStandard::lang_hlsl2018)) in ParseLangArgs()
4507 static void GeneratePreprocessorArgs(const PreprocessorOptions &Opts, in GeneratePreprocessorArgs() argument
4512 const PreprocessorOptions *PreprocessorOpts = &Opts; in GeneratePreprocessorArgs()
4519 if (Opts.PCHWithHdrStop && !Opts.PCHWithHdrStopCreate) in GeneratePreprocessorArgs()
4522 for (const auto &D : Opts.DeserializedPCHDeclsToErrorOn) in GeneratePreprocessorArgs()
4525 if (Opts.PrecompiledPreambleBytes != std::make_pair(0u, false)) in GeneratePreprocessorArgs()
4527 Twine(Opts.PrecompiledPreambleBytes.first) + "," + in GeneratePreprocessorArgs()
4528 (Opts.PrecompiledPreambleBytes.second ? "1" : "0")); in GeneratePreprocessorArgs()
4530 for (const auto &M : Opts.Macros) { in GeneratePreprocessorArgs()
4546 for (const auto &I : Opts.Includes) { in GeneratePreprocessorArgs()
4561 for (const auto &CI : Opts.ChainedIncludes) in GeneratePreprocessorArgs()
4564 for (const auto &RF : Opts.RemappedFiles) in GeneratePreprocessorArgs()
4567 if (Opts.SourceDateEpoch) in GeneratePreprocessorArgs()
4568 GenerateArg(Consumer, OPT_source_date_epoch, Twine(*Opts.SourceDateEpoch)); in GeneratePreprocessorArgs()
4570 if (Opts.DefineTargetOSMacros) in GeneratePreprocessorArgs()
4573 for (const auto &EmbedEntry : Opts.EmbedEntries) in GeneratePreprocessorArgs()
4580 static bool ParsePreprocessorArgs(PreprocessorOptions &Opts, ArgList &Args, in ParsePreprocessorArgs() argument
4586 PreprocessorOptions *PreprocessorOpts = &Opts; in ParsePreprocessorArgs()
4593 Opts.PCHWithHdrStop = Args.hasArg(OPT_pch_through_hdrstop_create) || in ParsePreprocessorArgs()
4597 Opts.DeserializedPCHDeclsToErrorOn.insert(A->getValue()); in ParsePreprocessorArgs()
4610 Opts.PrecompiledPreambleBytes.first = Bytes; in ParsePreprocessorArgs()
4611 Opts.PrecompiledPreambleBytes.second = (EndOfLine != 0); in ParsePreprocessorArgs()
4619 Opts.addMacroDef("__CET__=1"); in ParsePreprocessorArgs()
4621 Opts.addMacroDef("__CET__=2"); in ParsePreprocessorArgs()
4623 Opts.addMacroDef("__CET__=3"); in ParsePreprocessorArgs()
4629 Opts.addMacroDef(A->getValue()); in ParsePreprocessorArgs()
4631 Opts.addMacroUndef(A->getValue()); in ParsePreprocessorArgs()
4636 Opts.Includes.emplace_back(A->getValue()); in ParsePreprocessorArgs()
4639 Opts.ChainedIncludes.emplace_back(A->getValue()); in ParsePreprocessorArgs()
4649 Opts.addRemappedFile(Split.first, Split.second); in ParsePreprocessorArgs()
4664 Opts.SourceDateEpoch = V; in ParsePreprocessorArgs()
4670 Opts.EmbedEntries.push_back(std::string(Val)); in ParsePreprocessorArgs()
4677 Opts.LexEditorPlaceholders = false; in ParsePreprocessorArgs()
4679 Opts.DefineTargetOSMacros = in ParsePreprocessorArgs()
4681 OPT_fno_define_target_os_macros, Opts.DefineTargetOSMacros); in ParsePreprocessorArgs()
4687 GeneratePreprocessorOutputArgs(const PreprocessorOutputOptions &Opts, in GeneratePreprocessorOutputArgs() argument
4690 const PreprocessorOutputOptions &PreprocessorOutputOpts = Opts; in GeneratePreprocessorOutputArgs()
4697 bool Generate_dM = isStrictlyPreprocessorAction(Action) && !Opts.ShowCPP; in GeneratePreprocessorOutputArgs()
4700 if (!Generate_dM && Opts.ShowMacros) in GeneratePreprocessorOutputArgs()
4702 if (Opts.DirectivesOnly) in GeneratePreprocessorOutputArgs()
4706 static bool ParsePreprocessorOutputArgs(PreprocessorOutputOptions &Opts, in ParsePreprocessorOutputArgs() argument
4711 PreprocessorOutputOptions &PreprocessorOutputOpts = Opts; in ParsePreprocessorOutputArgs()
4718 Opts.ShowCPP = isStrictlyPreprocessorAction(Action) && !Args.hasArg(OPT_dM); in ParsePreprocessorOutputArgs()
4719 Opts.ShowMacros = Args.hasArg(OPT_dM) || Args.hasArg(OPT_dD); in ParsePreprocessorOutputArgs()
4720 Opts.DirectivesOnly = Args.hasArg(OPT_fdirectives_only); in ParsePreprocessorOutputArgs()
4725 static void GenerateTargetArgs(const TargetOptions &Opts, in GenerateTargetArgs() argument
4727 const TargetOptions *TargetOpts = &Opts; in GenerateTargetArgs()
4733 if (!Opts.SDKVersion.empty()) in GenerateTargetArgs()
4735 Opts.SDKVersion.getAsString()); in GenerateTargetArgs()
4736 if (!Opts.DarwinTargetVariantSDKVersion.empty()) in GenerateTargetArgs()
4738 Opts.DarwinTargetVariantSDKVersion.getAsString()); in GenerateTargetArgs()
4741 static bool ParseTargetArgs(TargetOptions &Opts, ArgList &Args, in ParseTargetArgs() argument
4745 TargetOptions *TargetOpts = &Opts; in ParseTargetArgs()
4758 Opts.SDKVersion = Version; in ParseTargetArgs()
4767 Opts.DarwinTargetVariantSDKVersion = Version; in ParseTargetArgs()
4779 const OptTable &Opts = getDriverOptTable(); in CreateFromArgsImpl() local
4782 InputArgList Args = Opts.ParseArgs(CommandLineArgs, MissingArgIndex, in CreateFromArgsImpl()
4795 if (Opts.findNearest(ArgString, Nearest, VisibilityMask) > 1) in CreateFromArgsImpl()