[PATCH] D119612: [clang] Pass more flags to ld64.lld
lgrey added inline comments. Comment at: clang/lib/Driver/ToolChains/Darwin.cpp:242 } else if (D.getLTOMode() == LTOK_Thin) // If we are using thin LTO, then create a directory instead. TmpPathName = D.GetTemporaryDirectory("thinlto"); thakis wrote: > lgrey: Do you think this should interact with > 134275d994d5fb38edfeb587ba45c8f495c8bf66 in any way, or should have any other > interesting side effects? > > From what I understand, it tells the linker to put temporary files created > for LTO in the given directory, but then the clang driver cleans up that > directory when it exits (potentially after running dsymutil). But most people > run dsymutil later, separately, so I think there should be no interactions > there. IIUC this is orthogonal to the cache's temp files. Something's actually not adding up here for me (why was it looking at the LTO cache files in the first place?), but this change shouldn't affect the cache thing. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D119612/new/ https://reviews.llvm.org/D119612 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D126902: [Attributes] Remove AttrSyntax and migrate uses to AttributeCommonInfo::Syntax (NFC)
lgrey created this revision. lgrey added a reviewer: aaron.ballman. lgrey added a project: clang. Herald added a subscriber: jdoerfert. Herald added a project: All. lgrey requested review of this revision. Herald added a subscriber: cfe-commits. This is setup for allowing `hasAttribute` to work for plugin-provided attributes Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D126902 Files: clang/include/clang/Basic/Attributes.h clang/lib/Basic/Attributes.cpp clang/lib/Lex/PPMacroExpansion.cpp clang/lib/Parse/ParseDecl.cpp clang/lib/Parse/ParseDeclCXX.cpp clang/utils/TableGen/ClangAttrEmitter.cpp Index: clang/utils/TableGen/ClangAttrEmitter.cpp === --- clang/utils/TableGen/ClangAttrEmitter.cpp +++ clang/utils/TableGen/ClangAttrEmitter.cpp @@ -3331,24 +3331,24 @@ OS << "const llvm::Triple &T = Target.getTriple();\n"; OS << "switch (Syntax) {\n"; - OS << "case AttrSyntax::GNU:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_GNU:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(GNU, OS, "GNU"); - OS << "case AttrSyntax::Declspec:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Declspec:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Declspec, OS, "Declspec"); - OS << "case AttrSyntax::Microsoft:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Microsoft:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Microsoft, OS, "Microsoft"); - OS << "case AttrSyntax::Pragma:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Pragma:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Pragma, OS, "Pragma"); - OS << "case AttrSyntax::HLSLSemantic:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_HLSLSemantic:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(HLSLSemantic, OS, "HLSLSemantic"); - auto fn = [&OS](const char *Spelling, const char *Variety, + auto fn = [&OS](const char *Spelling, const std::map> &List) { -OS << "case AttrSyntax::" << Variety << ": {\n"; +OS << "case AttributeCommonInfo::Syntax::AS_" << Spelling << ": {\n"; // C++11-style attributes are further split out based on the Scope. for (auto I = List.cbegin(), E = List.cend(); I != E; ++I) { if (I != List.cbegin()) @@ -3363,8 +3363,12 @@ } OS << "\n} break;\n"; }; - fn("CXX11", "CXX", CXX); - fn("C2x", "C", C2x); + fn("CXX11", CXX); + fn("C2x", C2x); + OS << "case AttributeCommonInfo::Syntax::AS_Keyword:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_ContextSensitiveKeyword:\n"; + OS << " return 0;\n"; + OS << "}\n"; } Index: clang/lib/Parse/ParseDeclCXX.cpp === --- clang/lib/Parse/ParseDeclCXX.cpp +++ clang/lib/Parse/ParseDeclCXX.cpp @@ -10,15 +10,16 @@ // //===--===// -#include "clang/Parse/Parser.h" #include "clang/AST/ASTContext.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/PrettyDeclStackTrace.h" +#include "clang/Basic/AttributeCommonInfo.h" #include "clang/Basic/Attributes.h" #include "clang/Basic/CharInfo.h" #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/TargetInfo.h" #include "clang/Parse/ParseDiagnostic.h" +#include "clang/Parse/Parser.h" #include "clang/Parse/RAIIObjectsForParser.h" #include "clang/Sema/DeclSpec.h" #include "clang/Sema/ParsedTemplate.h" @@ -4308,16 +4309,17 @@ // Try parsing microsoft attributes if (getLangOpts().MicrosoftExt || getLangOpts().HLSL) { -if (hasAttribute(AttrSyntax::Microsoft, ScopeName, AttrName, - getTargetInfo(), getLangOpts())) +if (hasAttribute(AttributeCommonInfo::Syntax::AS_Microsoft, ScopeName, + AttrName, getTargetInfo(), getLangOpts())) Syntax = ParsedAttr::AS_Microsoft; } // If the attribute isn't known, we will not attempt to parse any // arguments. if (Syntax != ParsedAttr::AS_Microsoft && - !hasAttribute(LO.CPlusPlus ? AttrSyntax::CXX : AttrSyntax::C, ScopeName, -AttrName, getTargetInfo(), getLangOpts())) { + !hasAttribute(LO.CPlusPlus ? AttributeCommonInfo::Syntax::AS_CXX11 + : AttributeCommonInfo::Syntax::AS_C2x, +ScopeName, AttrName, getTargetInfo(), getLangOpts())) { if (getLangOpts().MicrosoftExt || getLangOpts().HLSL) {} // Eat the left paren, then skip to the ending right paren. ConsumeParen(); Index: clang/lib/Parse/ParseDecl.cpp === --- clang/lib/Parse/ParseDecl.cpp +++ clang/lib/Parse/ParseDecl.cpp @@ -10,16 +10,17 @@ // //===-
[PATCH] D126902: [Attributes] Remove AttrSyntax and migrate uses to AttributeCommonInfo::Syntax (NFC)
lgrey added inline comments. Comment at: clang/utils/TableGen/ClangAttrEmitter.cpp:3368 + fn("C2x", C2x); + OS << "case AttributeCommonInfo::Syntax::AS_Keyword:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_ContextSensitiveKeyword:\n"; Not sure if this should be an assert or if 0 is fine. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126902/new/ https://reviews.llvm.org/D126902 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D126902: [Attributes] Remove AttrSyntax and migrate uses to AttributeCommonInfo::Syntax (NFC)
lgrey updated this revision to Diff 434036. lgrey added a comment. Add assert CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126902/new/ https://reviews.llvm.org/D126902 Files: clang/include/clang/Basic/Attributes.h clang/lib/Basic/Attributes.cpp clang/lib/Lex/PPMacroExpansion.cpp clang/lib/Parse/ParseDecl.cpp clang/lib/Parse/ParseDeclCXX.cpp clang/utils/TableGen/ClangAttrEmitter.cpp Index: clang/utils/TableGen/ClangAttrEmitter.cpp === --- clang/utils/TableGen/ClangAttrEmitter.cpp +++ clang/utils/TableGen/ClangAttrEmitter.cpp @@ -3331,24 +3331,24 @@ OS << "const llvm::Triple &T = Target.getTriple();\n"; OS << "switch (Syntax) {\n"; - OS << "case AttrSyntax::GNU:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_GNU:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(GNU, OS, "GNU"); - OS << "case AttrSyntax::Declspec:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Declspec:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Declspec, OS, "Declspec"); - OS << "case AttrSyntax::Microsoft:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Microsoft:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Microsoft, OS, "Microsoft"); - OS << "case AttrSyntax::Pragma:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Pragma:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Pragma, OS, "Pragma"); - OS << "case AttrSyntax::HLSLSemantic:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_HLSLSemantic:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(HLSLSemantic, OS, "HLSLSemantic"); - auto fn = [&OS](const char *Spelling, const char *Variety, + auto fn = [&OS](const char *Spelling, const std::map> &List) { -OS << "case AttrSyntax::" << Variety << ": {\n"; +OS << "case AttributeCommonInfo::Syntax::AS_" << Spelling << ": {\n"; // C++11-style attributes are further split out based on the Scope. for (auto I = List.cbegin(), E = List.cend(); I != E; ++I) { if (I != List.cbegin()) @@ -3363,8 +3363,13 @@ } OS << "\n} break;\n"; }; - fn("CXX11", "CXX", CXX); - fn("C2x", "C", C2x); + fn("CXX11", CXX); + fn("C2x", C2x); + OS << "case AttributeCommonInfo::Syntax::AS_Keyword:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_ContextSensitiveKeyword:\n"; + OS << " llvm_unreachable(\"hasAttribute not supported for keyword\");\n"; + OS << " return 0;\n"; + OS << "}\n"; } Index: clang/lib/Parse/ParseDeclCXX.cpp === --- clang/lib/Parse/ParseDeclCXX.cpp +++ clang/lib/Parse/ParseDeclCXX.cpp @@ -10,15 +10,16 @@ // //===--===// -#include "clang/Parse/Parser.h" #include "clang/AST/ASTContext.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/PrettyDeclStackTrace.h" +#include "clang/Basic/AttributeCommonInfo.h" #include "clang/Basic/Attributes.h" #include "clang/Basic/CharInfo.h" #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/TargetInfo.h" #include "clang/Parse/ParseDiagnostic.h" +#include "clang/Parse/Parser.h" #include "clang/Parse/RAIIObjectsForParser.h" #include "clang/Sema/DeclSpec.h" #include "clang/Sema/ParsedTemplate.h" @@ -4308,16 +4309,17 @@ // Try parsing microsoft attributes if (getLangOpts().MicrosoftExt || getLangOpts().HLSL) { -if (hasAttribute(AttrSyntax::Microsoft, ScopeName, AttrName, - getTargetInfo(), getLangOpts())) +if (hasAttribute(AttributeCommonInfo::Syntax::AS_Microsoft, ScopeName, + AttrName, getTargetInfo(), getLangOpts())) Syntax = ParsedAttr::AS_Microsoft; } // If the attribute isn't known, we will not attempt to parse any // arguments. if (Syntax != ParsedAttr::AS_Microsoft && - !hasAttribute(LO.CPlusPlus ? AttrSyntax::CXX : AttrSyntax::C, ScopeName, -AttrName, getTargetInfo(), getLangOpts())) { + !hasAttribute(LO.CPlusPlus ? AttributeCommonInfo::Syntax::AS_CXX11 + : AttributeCommonInfo::Syntax::AS_C2x, +ScopeName, AttrName, getTargetInfo(), getLangOpts())) { if (getLangOpts().MicrosoftExt || getLangOpts().HLSL) {} // Eat the left paren, then skip to the ending right paren. ConsumeParen(); Index: clang/lib/Parse/ParseDecl.cpp === --- clang/lib/Parse/ParseDecl.cpp +++ clang/lib/Parse/ParseDecl.cpp @@ -10,16 +10,17 @@ // //===--===// -#include "clang/Parse/Parser.h" -#include "clang/Parse/RAIIObjectsForParser.h" #include "clang/AST/ASTContext.h" #include "clan
[PATCH] D126902: [Attributes] Remove AttrSyntax and migrate uses to AttributeCommonInfo::Syntax (NFC)
This revision was automatically updated to reflect the committed changes. Closed by commit rGdd6bcdbf2171: [Attributes] Remove AttrSyntax and migrate uses to AttributeCommonInfo::Syntax… (authored by lgrey). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126902/new/ https://reviews.llvm.org/D126902 Files: clang/include/clang/Basic/Attributes.h clang/lib/Basic/Attributes.cpp clang/lib/Lex/PPMacroExpansion.cpp clang/lib/Parse/ParseDecl.cpp clang/lib/Parse/ParseDeclCXX.cpp clang/utils/TableGen/ClangAttrEmitter.cpp Index: clang/utils/TableGen/ClangAttrEmitter.cpp === --- clang/utils/TableGen/ClangAttrEmitter.cpp +++ clang/utils/TableGen/ClangAttrEmitter.cpp @@ -3331,24 +3331,24 @@ OS << "const llvm::Triple &T = Target.getTriple();\n"; OS << "switch (Syntax) {\n"; - OS << "case AttrSyntax::GNU:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_GNU:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(GNU, OS, "GNU"); - OS << "case AttrSyntax::Declspec:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Declspec:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Declspec, OS, "Declspec"); - OS << "case AttrSyntax::Microsoft:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Microsoft:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Microsoft, OS, "Microsoft"); - OS << "case AttrSyntax::Pragma:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_Pragma:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(Pragma, OS, "Pragma"); - OS << "case AttrSyntax::HLSLSemantic:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_HLSLSemantic:\n"; OS << " return llvm::StringSwitch(Name)\n"; GenerateHasAttrSpellingStringSwitch(HLSLSemantic, OS, "HLSLSemantic"); - auto fn = [&OS](const char *Spelling, const char *Variety, + auto fn = [&OS](const char *Spelling, const std::map> &List) { -OS << "case AttrSyntax::" << Variety << ": {\n"; +OS << "case AttributeCommonInfo::Syntax::AS_" << Spelling << ": {\n"; // C++11-style attributes are further split out based on the Scope. for (auto I = List.cbegin(), E = List.cend(); I != E; ++I) { if (I != List.cbegin()) @@ -3363,8 +3363,13 @@ } OS << "\n} break;\n"; }; - fn("CXX11", "CXX", CXX); - fn("C2x", "C", C2x); + fn("CXX11", CXX); + fn("C2x", C2x); + OS << "case AttributeCommonInfo::Syntax::AS_Keyword:\n"; + OS << "case AttributeCommonInfo::Syntax::AS_ContextSensitiveKeyword:\n"; + OS << " llvm_unreachable(\"hasAttribute not supported for keyword\");\n"; + OS << " return 0;\n"; + OS << "}\n"; } Index: clang/lib/Parse/ParseDeclCXX.cpp === --- clang/lib/Parse/ParseDeclCXX.cpp +++ clang/lib/Parse/ParseDeclCXX.cpp @@ -10,15 +10,16 @@ // //===--===// -#include "clang/Parse/Parser.h" #include "clang/AST/ASTContext.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/PrettyDeclStackTrace.h" +#include "clang/Basic/AttributeCommonInfo.h" #include "clang/Basic/Attributes.h" #include "clang/Basic/CharInfo.h" #include "clang/Basic/OperatorKinds.h" #include "clang/Basic/TargetInfo.h" #include "clang/Parse/ParseDiagnostic.h" +#include "clang/Parse/Parser.h" #include "clang/Parse/RAIIObjectsForParser.h" #include "clang/Sema/DeclSpec.h" #include "clang/Sema/ParsedTemplate.h" @@ -4308,16 +4309,17 @@ // Try parsing microsoft attributes if (getLangOpts().MicrosoftExt || getLangOpts().HLSL) { -if (hasAttribute(AttrSyntax::Microsoft, ScopeName, AttrName, - getTargetInfo(), getLangOpts())) +if (hasAttribute(AttributeCommonInfo::Syntax::AS_Microsoft, ScopeName, + AttrName, getTargetInfo(), getLangOpts())) Syntax = ParsedAttr::AS_Microsoft; } // If the attribute isn't known, we will not attempt to parse any // arguments. if (Syntax != ParsedAttr::AS_Microsoft && - !hasAttribute(LO.CPlusPlus ? AttrSyntax::CXX : AttrSyntax::C, ScopeName, -AttrName, getTargetInfo(), getLangOpts())) { + !hasAttribute(LO.CPlusPlus ? AttributeCommonInfo::Syntax::AS_CXX11 + : AttributeCommonInfo::Syntax::AS_C2x, +ScopeName, AttrName, getTargetInfo(), getLangOpts())) { if (getLangOpts().MicrosoftExt || getLangOpts().HLSL) {} // Eat the left paren, then skip to the ending right paren. ConsumeParen(); Index: clang/lib/Parse/ParseDecl.cpp === --- clang/lib/Parse/ParseDecl.cpp +++ clang/lib/Parse/ParseDecl.cpp @@ -10,16 +10,17 @@ // //===