Projects
Eulaceura:Factory
llvm
_service:obs_scm:0018-Fix-declaration-definitio...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0018-Fix-declaration-definition-mismatch-for-classic-flang.patch of Package llvm
From d6d17d8f0362ac47100be32f0d9cb31fd66a1060 Mon Sep 17 00:00:00 2001 From: luofeng14 <luofeng13@huawei.com> Date: Wed, 17 Apr 2024 14:26:07 +0800 Subject: [PATCH] Fix declaration definition mismatch for classic flang --- llvm/cmake/modules/TableGen.cmake | 4 + llvm/include/llvm-c/DebugInfo.h | 11 ++- .../include/llvm/Analysis/TargetLibraryInfo.h | 5 + llvm/include/llvm/Analysis/VecFuncs.def | 8 ++ llvm/include/llvm/IR/DebugInfoMetadata.h | 65 ++++++++++--- llvm/lib/Analysis/TargetLibraryInfo.cpp | 24 +++++ llvm/lib/AsmParser/LLParser.cpp | 6 +- llvm/lib/Bitcode/Reader/MetadataLoader.cpp | 44 ++++++--- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 6 ++ llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h | 4 + .../CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 4 +- llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 8 +- llvm/lib/IR/AsmWriter.cpp | 2 + llvm/lib/IR/DIBuilder.cpp | 21 +++- llvm/lib/IR/DebugInfo.cpp | 22 ++++- llvm/lib/IR/DebugInfoMetadata.cpp | 19 +++- llvm/lib/IR/LLVMContextImpl.h | 22 ++++- .../Instrumentation/InstrProfiling.cpp | 5 +- llvm/tools/llvm-c-test/debuginfo.c | 12 ++- llvm/unittests/IR/MetadataTest.cpp | 97 +++++++++++++++---- llvm/utils/lit/lit/llvm/config.py | 17 ++-- 21 files changed, 321 insertions(+), 85 deletions(-) diff --git a/llvm/cmake/modules/TableGen.cmake b/llvm/cmake/modules/TableGen.cmake index 7fd6628ef55d..d4d2c06c051b 100644 --- a/llvm/cmake/modules/TableGen.cmake +++ b/llvm/cmake/modules/TableGen.cmake @@ -76,6 +76,10 @@ function(tablegen project ofn) set(tblgen_change_flag "--write-if-changed") endif() + if (LLVM_ENABLE_CLASSIC_FLANG) + list(APPEND tblgen_change_flag "-DENABLE_CLASSIC_FLANG") + endif() + if (NOT LLVM_ENABLE_WARNINGS) list(APPEND LLVM_TABLEGEN_FLAGS "-no-warn-on-unused-template-args") endif() diff --git a/llvm/include/llvm-c/DebugInfo.h b/llvm/include/llvm-c/DebugInfo.h index 09d584c24711..0201bac4349d 100644 --- a/llvm/include/llvm-c/DebugInfo.h +++ b/llvm/include/llvm-c/DebugInfo.h @@ -1148,7 +1148,10 @@ LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, - LLVMMetadataRef Expr, LLVMMetadataRef Decl, LLVMDIFlags Flags, + LLVMMetadataRef Expr, LLVMMetadataRef Decl, +#ifdef ENABLE_CLASSIC_FLANG + LLVMDIFlags Flags, +#endif uint32_t AlignInBits); @@ -1247,7 +1250,11 @@ LLVMMetadataRef LLVMDIBuilderCreateTempGlobalVariableFwdDecl( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, - LLVMMetadataRef Decl, LLVMDIFlags Flags, uint32_t AlignInBits); + LLVMMetadataRef Decl, +#ifdef ENABLE_CLASSIC_FLANG + LLVMDIFlags Flags, +#endif + uint32_t AlignInBits); /** * Insert a new llvm.dbg.declare intrinsic call before the given instruction. diff --git a/llvm/include/llvm/Analysis/TargetLibraryInfo.h b/llvm/include/llvm/Analysis/TargetLibraryInfo.h index 490252cd018a..6805c6535189 100644 --- a/llvm/include/llvm/Analysis/TargetLibraryInfo.h +++ b/llvm/include/llvm/Analysis/TargetLibraryInfo.h @@ -22,6 +22,9 @@ namespace llvm { template <typename T> class ArrayRef; class Function; class Module; +#ifndef ENABLE_CLASSIC_FLANG +class Triple; +#endif /// Describes a possible vectorization of a function. /// Function 'VectorFnName' is equivalent to 'ScalarFnName' vectorized @@ -80,7 +83,9 @@ class TargetLibraryInfoImpl { bool isValidProtoForLibFunc(const FunctionType &FTy, LibFunc F, const Module &M) const; +#ifdef ENABLE_CLASSIC_FLANG Triple T; +#endif public: /// List of known vector-functions libraries. diff --git a/llvm/include/llvm/Analysis/VecFuncs.def b/llvm/include/llvm/Analysis/VecFuncs.def index d1712d158423..679e28057d6e 100644 --- a/llvm/include/llvm/Analysis/VecFuncs.def +++ b/llvm/include/llvm/Analysis/VecFuncs.def @@ -910,6 +910,8 @@ TLI_DEFINE_VECFUNC("tgamma", "armpl_svtgamma_f64_x", SCALABLE(2), MASKED) TLI_DEFINE_VECFUNC("tgammaf", "armpl_svtgamma_f32_x", SCALABLE(4), MASKED) #elif defined(TLI_DEFINE_PGMATH_AARCH64_VECFUNCS) + +#ifdef ENABLE_CLASSIC_FLANG // Classic flang libpgmath library's Vector Functions for AArch64 TLI_DEFINE_VECFUNC("__fd_sin_1", "__fd_sin_2", FIXED(2)) @@ -1079,8 +1081,11 @@ TLI_DEFINE_VECFUNC("__ps_exp_1", "__ps_exp_4", FIXED(4)) TLI_DEFINE_VECFUNC("__rd_exp_1", "__rd_exp_2", FIXED(2)) TLI_DEFINE_VECFUNC("__rs_exp_1", "__rs_exp_4", FIXED(4)) +#endif #elif defined(TLI_DEFINE_PGMATH_X86_VECFUNCS) + +#ifdef ENABLE_CLASSIC_FLANG // Classic flang libpgmath library's Vector Functions for X86 TLI_DEFINE_VECFUNC("__fd_sin_1", "__fd_sin_2", FIXED(2)) @@ -1498,6 +1503,7 @@ TLI_DEFINE_VECFUNC("__rd_exp_1", "__rd_exp_8", FIXED(8)) TLI_DEFINE_VECFUNC("__rs_exp_1", "__rs_exp_4", FIXED(4)) TLI_DEFINE_VECFUNC("__rs_exp_1", "__rs_exp_8", FIXED(8)) TLI_DEFINE_VECFUNC("__rs_exp_1", "__rs_exp_16", FIXED(16)) +#endif #else #error "Must choose which vector library functions are to be defined." @@ -1519,5 +1525,7 @@ TLI_DEFINE_VECFUNC("__rs_exp_1", "__rs_exp_16", FIXED(16)) #undef TLI_DEFINE_SLEEFGNUABI_SCALABLE_VECFUNCS #undef TLI_DEFINE_MASSV_VECFUNCS_NAMES #undef TLI_DEFINE_ARMPL_VECFUNCS +#ifdef ENABLE_CLASSIC_FLANG #undef TLI_DEFINE_PGMATH_AARCH64_VECFUNCS #undef TLI_DEFINE_PGMATH_X86_VECFUNCS +#endif diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h index 9bd86172a4c0..277c2ddd4dd9 100644 --- a/llvm/include/llvm/IR/DebugInfoMetadata.h +++ b/llvm/include/llvm/IR/DebugInfoMetadata.h @@ -3062,14 +3062,23 @@ class DIGlobalVariable : public DIVariable { bool IsLocalToUnit; bool IsDefinition; +#ifdef ENABLE_CLASSIC_FLANG DIFlags Flags; +#endif DIGlobalVariable(LLVMContext &C, StorageType Storage, unsigned Line, - bool IsLocalToUnit, bool IsDefinition, DIFlags Flags, + bool IsLocalToUnit, bool IsDefinition, +#ifdef ENABLE_CLASSIC_FLANG + DIFlags Flags, +#endif uint32_t AlignInBits, ArrayRef<Metadata *> Ops) : DIVariable(C, DIGlobalVariableKind, Storage, Line, Ops, AlignInBits), - IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition), - Flags(Flags) {} +#ifdef ENABLE_CLASSIC_FLANG + IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition), Flags(Flags) {} +#else + IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition) {} +#endif + ~DIGlobalVariable() = default; static DIGlobalVariable * @@ -3077,28 +3086,40 @@ class DIGlobalVariable : public DIVariable { StringRef LinkageName, DIFile *File, unsigned Line, DIType *Type, bool IsLocalToUnit, bool IsDefinition, DIDerivedType *StaticDataMemberDeclaration, MDTuple *TemplateParams, - DIFlags Flags, uint32_t AlignInBits, DINodeArray Annotations, +#ifdef ENABLE_CLASSIC_FLANG + DIFlags Flags, +#endif + uint32_t AlignInBits, DINodeArray Annotations, StorageType Storage, bool ShouldCreate = true) { return getImpl(Context, Scope, getCanonicalMDString(Context, Name), getCanonicalMDString(Context, LinkageName), File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - cast_or_null<Metadata>(TemplateParams), Flags, AlignInBits, - Annotations.get(), Storage, ShouldCreate); + cast_or_null<Metadata>(TemplateParams), +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, Annotations.get(), Storage, ShouldCreate); } static DIGlobalVariable * getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition, Metadata *StaticDataMemberDeclaration, Metadata *TemplateParams, - DIFlags Flags, uint32_t AlignInBits, Metadata *Annotations, +#ifdef ENABLE_CLASSIC_FLANG + DIFlags Flags, +#endif + uint32_t AlignInBits, Metadata *Annotations, StorageType Storage, bool ShouldCreate = true); TempDIGlobalVariable cloneImpl() const { return getTemporary(getContext(), getScope(), getName(), getLinkageName(), getFile(), getLine(), getType(), isLocalToUnit(), isDefinition(), getStaticDataMemberDeclaration(), - getTemplateParams(), getFlags(), getAlignInBits(), - getAnnotations()); + getTemplateParams(), +#ifdef ENABLE_CLASSIC_FLANG + getFlags(), +#endif + getAlignInBits(), getAnnotations()); } public: @@ -3107,26 +3128,40 @@ public: (DIScope * Scope, StringRef Name, StringRef LinkageName, DIFile *File, unsigned Line, DIType *Type, bool IsLocalToUnit, bool IsDefinition, DIDerivedType *StaticDataMemberDeclaration, MDTuple *TemplateParams, - DIFlags Flags, uint32_t AlignInBits, DINodeArray Annotations), +#ifdef ENABLE_CLASSIC_FLANG + DIFlags Flags, +#endif + uint32_t AlignInBits, DINodeArray Annotations), (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - StaticDataMemberDeclaration, TemplateParams, Flags, AlignInBits, - Annotations)) + StaticDataMemberDeclaration, TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, Annotations)) DEFINE_MDNODE_GET( DIGlobalVariable, (Metadata * Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition, Metadata *StaticDataMemberDeclaration, Metadata *TemplateParams, - DIFlags Flags, uint32_t AlignInBits, Metadata *Annotations), +#ifdef ENABLE_CLASSIC_FLANG + DIFlags Flags, +#endif + uint32_t AlignInBits, Metadata *Annotations), (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - StaticDataMemberDeclaration, TemplateParams, Flags, AlignInBits, - Annotations)) + StaticDataMemberDeclaration, TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, Annotations)) TempDIGlobalVariable clone() const { return cloneImpl(); } bool isLocalToUnit() const { return IsLocalToUnit; } bool isDefinition() const { return IsDefinition; } +#ifdef ENABLE_CLASSIC_FLANG DIFlags getFlags() const { return Flags; } bool isArtificial() const { return getFlags() & FlagArtificial; } +#endif StringRef getDisplayName() const { return getStringOperand(4); } StringRef getLinkageName() const { return getStringOperand(5); } DIDerivedType *getStaticDataMemberDeclaration() const { diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp index a6593f6b3757..a9d69af5373c 100644 --- a/llvm/lib/Analysis/TargetLibraryInfo.cpp +++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp @@ -871,14 +871,26 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, TLI.addVectorizableFunctionsFromVecLib(ClVectorLibrary, T); } +#ifdef ENABLE_CLASSIC_FLANG TargetLibraryInfoImpl::TargetLibraryInfoImpl() : T(Triple()) { +#else +TargetLibraryInfoImpl::TargetLibraryInfoImpl() { +#endif // Default to everything being available. memset(AvailableArray, -1, sizeof(AvailableArray)); +#ifdef ENABLE_CLASSIC_FLANG initialize(*this, T, StandardNames); +#else + initialize(*this, Triple(), StandardNames); +#endif } +#ifdef ENABLE_CLASSIC_FLANG TargetLibraryInfoImpl::TargetLibraryInfoImpl(const Triple &T) : T(T) { +#else +TargetLibraryInfoImpl::TargetLibraryInfoImpl(const Triple &T) { +#endif // Default to everything being available. memset(AvailableArray, -1, sizeof(AvailableArray)); @@ -890,7 +902,11 @@ TargetLibraryInfoImpl::TargetLibraryInfoImpl(const TargetLibraryInfoImpl &TLI) ShouldExtI32Return(TLI.ShouldExtI32Return), ShouldSignExtI32Param(TLI.ShouldSignExtI32Param), ShouldSignExtI32Return(TLI.ShouldSignExtI32Return), +#ifdef ENABLE_CLASSIC_FLANG SizeOfInt(TLI.SizeOfInt), T(TLI.T) { +#else + SizeOfInt(TLI.SizeOfInt) { +#endif memcpy(AvailableArray, TLI.AvailableArray, sizeof(AvailableArray)); VectorDescs = TLI.VectorDescs; ScalarDescs = TLI.ScalarDescs; @@ -902,7 +918,11 @@ TargetLibraryInfoImpl::TargetLibraryInfoImpl(TargetLibraryInfoImpl &&TLI) ShouldExtI32Return(TLI.ShouldExtI32Return), ShouldSignExtI32Param(TLI.ShouldSignExtI32Param), ShouldSignExtI32Return(TLI.ShouldSignExtI32Return), +#ifdef ENABLE_CLASSIC_FLANG SizeOfInt(TLI.SizeOfInt), T(TLI.T) { +#else + SizeOfInt(TLI.SizeOfInt) { +#endif std::move(std::begin(TLI.AvailableArray), std::end(TLI.AvailableArray), AvailableArray); VectorDescs = TLI.VectorDescs; @@ -916,7 +936,9 @@ TargetLibraryInfoImpl &TargetLibraryInfoImpl::operator=(const TargetLibraryInfoI ShouldSignExtI32Param = TLI.ShouldSignExtI32Param; ShouldSignExtI32Return = TLI.ShouldSignExtI32Return; SizeOfInt = TLI.SizeOfInt; +#ifdef ENABLE_CLASSIC_FLANG T = TLI.T; +#endif memcpy(AvailableArray, TLI.AvailableArray, sizeof(AvailableArray)); return *this; } @@ -928,7 +950,9 @@ TargetLibraryInfoImpl &TargetLibraryInfoImpl::operator=(TargetLibraryInfoImpl && ShouldSignExtI32Param = TLI.ShouldSignExtI32Param; ShouldSignExtI32Return = TLI.ShouldSignExtI32Return; SizeOfInt = TLI.SizeOfInt; +#ifdef ENABLE_CLASSIC_FLANG T = TLI.T; +#endif std::move(std::begin(TLI.AvailableArray), std::end(TLI.AvailableArray), AvailableArray); return *this; diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index d7eb34e3d148..0a7166bd50b7 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -5432,7 +5432,6 @@ bool LLParser::parseDIGlobalVariable(MDNode *&Result, bool IsDistinct) { OPTIONAL(isDefinition, MDBoolField, (true)); \ OPTIONAL(templateParams, MDField, ); \ OPTIONAL(declaration, MDField, ); \ - OPTIONAL(flags, DIFlagField, ); \ OPTIONAL(align, MDUnsignedField, (0, UINT32_MAX)); \ OPTIONAL(annotations, MDField, ); #endif @@ -5443,7 +5442,10 @@ bool LLParser::parseDIGlobalVariable(MDNode *&Result, bool IsDistinct) { GET_OR_DISTINCT(DIGlobalVariable, (Context, scope.Val, name.Val, linkageName.Val, file.Val, line.Val, type.Val, isLocal.Val, isDefinition.Val, - declaration.Val, templateParams.Val, flags.Val, + declaration.Val, templateParams.Val, +#ifdef ENABLE_CLASSIC_FLANG + flags.Val, +#endif align.Val, annotations.Val)); return false; } diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp index c21e5e5dba97..a33a0587d1c0 100644 --- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp +++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp @@ -1979,12 +1979,16 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( break; } case bitc::METADATA_GLOBAL_VAR: { +#ifdef ENABLE_CLASSIC_FLANG if (Record.size() < 11 || Record.size() > 14) +#else + if (Record.size() < 11 || Record.size() > 13) +#endif return error("Invalid record"); IsDistinct = Record[0] & 1; unsigned Version = Record[0] >> 1; - +#ifdef ENABLE_CLASSIC_FLANG if (Version == 3) { // Add support for DIFlags Metadata *Annotations = nullptr; @@ -1998,24 +2002,30 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( getMDString(Record[3]), getMDOrNull(Record[4]), Record[5], getDITypeRefOrNull(Record[6]), Record[7], Record[8], getMDOrNull(Record[9]), getMDOrNull(Record[10]), - static_cast<DINode::DIFlags>(Record[11]), Record[12], - Annotations)), + static_cast<DINode::DIFlags>(Record[11]), + Record[12], Annotations)), NextMetadataNo); NextMetadataNo++; } else if (Version == 2) { +#else + if (Version == 2) { +#endif Metadata *Annotations = nullptr; if (Record.size() > 12) Annotations = getMDOrNull(Record[12]); MetadataList.assignValue( - GET_OR_DISTINCT( - DIGlobalVariable, - (Context, getMDOrNull(Record[1]), getMDString(Record[2]), - getMDString(Record[3]), getMDOrNull(Record[4]), Record[5], - getDITypeRefOrNull(Record[6]), Record[7], Record[8], - getMDOrNull(Record[9]), getMDOrNull(Record[10]), - DINode::FlagZero, Record[11], Annotations)), + GET_OR_DISTINCT(DIGlobalVariable, + (Context, getMDOrNull(Record[1]), + getMDString(Record[2]), getMDString(Record[3]), + getMDOrNull(Record[4]), Record[5], + getDITypeRefOrNull(Record[6]), Record[7], Record[8], + getMDOrNull(Record[9]), getMDOrNull(Record[10]), +#ifdef ENABLE_CLASSIC_FLANG + DINode::FlagZero, +#endif + Record[11], Annotations)), NextMetadataNo); NextMetadataNo++; @@ -2028,8 +2038,11 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( (Context, getMDOrNull(Record[1]), getMDString(Record[2]), getMDString(Record[3]), getMDOrNull(Record[4]), Record[5], getDITypeRefOrNull(Record[6]), Record[7], Record[8], - getMDOrNull(Record[10]), nullptr, DINode::FlagZero, Record[11], - nullptr)), + getMDOrNull(Record[10]), nullptr, +#ifdef ENABLE_CLASSIC_FLANG + DINode::FlagZero, +#endif + Record[11], nullptr)), NextMetadataNo); NextMetadataNo++; @@ -2062,8 +2075,11 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata( (Context, getMDOrNull(Record[1]), getMDString(Record[2]), getMDString(Record[3]), getMDOrNull(Record[4]), Record[5], getDITypeRefOrNull(Record[6]), Record[7], Record[8], - getMDOrNull(Record[10]), nullptr, DINode::FlagZero, AlignInBits, - nullptr)); + getMDOrNull(Record[10]), nullptr, +#ifdef ENABLE_CLASSIC_FLANG + DINode::FlagZero, +#endif + AlignInBits, nullptr)); DIGlobalVariableExpression *DGVE = nullptr; if (Attach || Expr) diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 013e7ce2d425..d5bcd327a9b7 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -2014,7 +2014,11 @@ void ModuleBitcodeWriter::writeDITemplateValueParameter( void ModuleBitcodeWriter::writeDIGlobalVariable( const DIGlobalVariable *N, SmallVectorImpl<uint64_t> &Record, unsigned Abbrev) { +#ifdef ENABLE_CLASSIC_FLANG const uint64_t Version = 3 << 1; +#else + const uint64_t Version = 2 << 1; +#endif Record.push_back((uint64_t)N->isDistinct() | Version); Record.push_back(VE.getMetadataOrNullID(N->getScope())); Record.push_back(VE.getMetadataOrNullID(N->getRawName())); @@ -2026,7 +2030,9 @@ void ModuleBitcodeWriter::writeDIGlobalVariable( Record.push_back(N->isDefinition()); Record.push_back(VE.getMetadataOrNullID(N->getStaticDataMemberDeclaration())); Record.push_back(VE.getMetadataOrNullID(N->getTemplateParams())); +#ifdef ENABLE_CLASSIC_FLANG Record.push_back(N->getFlags()); +#endif Record.push_back(N->getAlignInBits()); Record.push_back(VE.getMetadataOrNullID(N->getAnnotations().get())); diff --git a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h index ee8be3921ab7..b4fe2295d0b1 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h +++ b/llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h @@ -115,6 +115,7 @@ class DbgValueLoc { SmallVector<DbgValueLocEntry, 2> ValueLocEntries; bool IsVariadic; +#ifdef ENABLE_CLASSIC_FLANG /// Type of entry that this represents. enum EntryType { E_Location, @@ -138,6 +139,7 @@ class DbgValueLoc { /// Or a location from target specific location. TargetIndexLocation TIL; }; +#endif public: DbgValueLoc(const DIExpression *Expr, ArrayRef<DbgValueLocEntry> Locs) @@ -162,6 +164,7 @@ public: assert(((Expr && Expr->isValid()) || !Loc.isLocation()) && "DBG_VALUE with a machine location must have a valid expression."); } +#ifdef ENABLE_CLASSIC_FLANG DbgValueLoc(const DIExpression *Expr, int64_t i) : Expression(Expr), EntryKind(E_Integer) { Constant.Int = i; @@ -193,6 +196,7 @@ public: const ConstantInt *getConstantInt() const { return Constant.CIP; } MachineLocation getLoc() const { return Loc; } TargetIndexLocation getTargetIndexLocation() const { return TIL; } +#endif bool isFragment() const { return getExpression()->isFragment(); } bool isEntryVal() const { return getExpression()->isEntryValue(); } diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 78ff0d351492..4a70d1f07d6e 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -184,10 +184,10 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( addFlag(*VariableDIE, dwarf::DW_AT_declaration); else addGlobalName(GV->getName(), *VariableDIE, DeclContext); - +#ifdef ENABLE_CLASSIC_FLANG if (GV->isArtificial()) addFlag(*VariableDIE, dwarf::DW_AT_artificial); - +#endif addAnnotation(*VariableDIE, GV->getAnnotations()); if (uint32_t AlignInBytes = GV->getAlignInBytes()) diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index e526614792c7..1f7fe5c382e9 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -283,9 +283,9 @@ struct SymbolCU { const MCSymbol *Sym; DwarfCompileUnit *CU; }; - +#ifdef ENABLE_CLASSIC_FLANG class DummyDwarfExpression; - +#endif /// The kind of accelerator tables we should emit. enum class AccelTableKind { Default, ///< Platform default. @@ -438,9 +438,9 @@ private: /// Map for tracking Fortran deferred CHARACTER lengths. DenseMap<const DIStringType *, unsigned> StringTypeLocMap; - +#ifdef ENABLE_CLASSIC_FLANG DenseMap<const DIVariable*,const DIType*> VariableInDependentType; - +#endif AddressPool AddrPool; /// Accelerator tables. diff --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp index c47dd4664ea6..df753b91ff90 100644 --- a/llvm/lib/IR/AsmWriter.cpp +++ b/llvm/lib/IR/AsmWriter.cpp @@ -2281,7 +2281,9 @@ static void writeDIGlobalVariable(raw_ostream &Out, const DIGlobalVariable *N, Printer.printBool("isDefinition", N->isDefinition()); Printer.printMetadata("declaration", N->getRawStaticDataMemberDeclaration()); Printer.printMetadata("templateParams", N->getRawTemplateParams()); +#ifdef ENABLE_CLASSIC_FLANG Printer.printDIFlags("flags", N->getFlags()); +#endif Printer.printInt("align", N->getAlignInBits()); Printer.printMetadata("annotations", N->getRawAnnotations()); Out << ")"; diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp index af6ebf702165..41b2acd8661f 100644 --- a/llvm/lib/IR/DIBuilder.cpp +++ b/llvm/lib/IR/DIBuilder.cpp @@ -725,13 +725,19 @@ DIGlobalVariableExpression *DIBuilder::createGlobalVariableExpression( DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F, unsigned LineNumber, DIType *Ty, bool IsLocalToUnit, bool isDefined, DIExpression *Expr, MDNode *Decl, MDTuple *TemplateParams, - DINode::DIFlags Flags, uint32_t AlignInBits, DINodeArray Annotations) { +#ifdef ENABLE_CLASSIC_FLANG + DINode::DIFlags Flags, +#endif + uint32_t AlignInBits, DINodeArray Annotations) { checkGlobalVariableScope(Context); auto *GV = DIGlobalVariable::getDistinct( VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F, LineNumber, Ty, IsLocalToUnit, isDefined, - cast_or_null<DIDerivedType>(Decl), TemplateParams, Flags, + cast_or_null<DIDerivedType>(Decl), TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif AlignInBits, Annotations); if (!Expr) Expr = createExpression(); @@ -743,13 +749,20 @@ DIGlobalVariableExpression *DIBuilder::createGlobalVariableExpression( DIGlobalVariable *DIBuilder::createTempGlobalVariableFwdDecl( DIScope *Context, StringRef Name, StringRef LinkageName, DIFile *F, unsigned LineNumber, DIType *Ty, bool IsLocalToUnit, MDNode *Decl, - MDTuple *TemplateParams, DINode::DIFlags Flags, uint32_t AlignInBits) { + MDTuple *TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + DINode::DIFlags Flags, +#endif + uint32_t AlignInBits) { checkGlobalVariableScope(Context); return DIGlobalVariable::getTemporary( VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F, LineNumber, Ty, IsLocalToUnit, false, - cast_or_null<DIDerivedType>(Decl), TemplateParams, Flags, + cast_or_null<DIDerivedType>(Decl), TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif AlignInBits, nullptr) .release(); } diff --git a/llvm/lib/IR/DebugInfo.cpp b/llvm/lib/IR/DebugInfo.cpp index 3696beccdd0c..f21a8f6e3c10 100644 --- a/llvm/lib/IR/DebugInfo.cpp +++ b/llvm/lib/IR/DebugInfo.cpp @@ -1547,13 +1547,20 @@ LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, - LLVMMetadataRef Expr, LLVMMetadataRef Decl, LLVMDIFlags Flags, + LLVMMetadataRef Expr, LLVMMetadataRef Decl, +#ifdef ENABLE_CLASSIC_FLANG + LLVMDIFlags Flags, +#endif uint32_t AlignInBits) { return wrap(unwrap(Builder)->createGlobalVariableExpression( unwrapDI<DIScope>(Scope), {Name, NameLen}, {Linkage, LinkLen}, unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), LocalToUnit, true, unwrap<DIExpression>(Expr), unwrapDI<MDNode>(Decl), - nullptr, map_from_llvmDIFlags(Flags), AlignInBits)); + nullptr, +#ifdef ENABLE_CLASSIC_FLANG + map_from_llvmDIFlags(Flags), +#endif + AlignInBits)); } LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE) { @@ -1598,11 +1605,18 @@ LLVMMetadataRef LLVMDIBuilderCreateTempGlobalVariableFwdDecl( LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, - LLVMMetadataRef Decl, LLVMDIFlags Flags, uint32_t AlignInBits) { + LLVMMetadataRef Decl, +#ifdef ENABLE_CLASSIC_FLANG + LLVMDIFlags Flags, +#endif + uint32_t AlignInBits) { return wrap(unwrap(Builder)->createTempGlobalVariableFwdDecl( unwrapDI<DIScope>(Scope), {Name, NameLen}, {Linkage, LnkLen}, unwrapDI<DIFile>(File), LineNo, unwrapDI<DIType>(Ty), LocalToUnit, - unwrapDI<MDNode>(Decl), nullptr, map_from_llvmDIFlags(Flags), + unwrapDI<MDNode>(Decl), nullptr, +#ifdef ENABLE_CLASSIC_FLANG + map_from_llvmDIFlags(Flags), +#endif AlignInBits)); } diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp index d599896ee456..074529f6e1c6 100644 --- a/llvm/lib/IR/DebugInfoMetadata.cpp +++ b/llvm/lib/IR/DebugInfoMetadata.cpp @@ -1258,7 +1258,10 @@ DIGlobalVariable::getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name, MDString *LinkageName, Metadata *File, unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition, Metadata *StaticDataMemberDeclaration, - Metadata *TemplateParams, DIFlags Flags, + Metadata *TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + DIFlags Flags, +#endif uint32_t AlignInBits, Metadata *Annotations, StorageType Storage, bool ShouldCreate) { assert(isCanonical(Name) && "Expected canonical MDString"); @@ -1266,8 +1269,11 @@ DIGlobalVariable::getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name, DEFINE_GETIMPL_LOOKUP( DIGlobalVariable, (Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - StaticDataMemberDeclaration, TemplateParams, Flags, AlignInBits, - Annotations)); + StaticDataMemberDeclaration, TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, Annotations)); Metadata *Ops[] = {Scope, Name, File, @@ -1278,8 +1284,11 @@ DIGlobalVariable::getImpl(LLVMContext &Context, Metadata *Scope, MDString *Name, TemplateParams, Annotations}; DEFINE_GETIMPL_STORE(DIGlobalVariable, - (Line, IsLocalToUnit, IsDefinition, Flags, AlignInBits), - Ops); + (Line, IsLocalToUnit, IsDefinition, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits), Ops); } DILocalVariable * diff --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h index 8a621725f55e..01faec286b7d 100644 --- a/llvm/lib/IR/LLVMContextImpl.h +++ b/llvm/lib/IR/LLVMContextImpl.h @@ -1055,7 +1055,9 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> { bool IsDefinition; Metadata *StaticDataMemberDeclaration; Metadata *TemplateParams; +#ifdef ENABLE_CLASSIC_FLANG unsigned Flags; +#endif uint32_t AlignInBits; Metadata *Annotations; @@ -1063,13 +1065,18 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> { Metadata *File, unsigned Line, Metadata *Type, bool IsLocalToUnit, bool IsDefinition, Metadata *StaticDataMemberDeclaration, Metadata *TemplateParams, +#ifdef ENABLE_CLASSIC_FLANG unsigned Flags, +#endif uint32_t AlignInBits, Metadata *Annotations) : Scope(Scope), Name(Name), LinkageName(LinkageName), File(File), Line(Line), Type(Type), IsLocalToUnit(IsLocalToUnit), IsDefinition(IsDefinition), StaticDataMemberDeclaration(StaticDataMemberDeclaration), - TemplateParams(TemplateParams), Flags(Flags), + TemplateParams(TemplateParams), +#ifdef ENABLE_CLASSIC_FLANG + Flags(Flags), +#endif AlignInBits(AlignInBits), Annotations(Annotations) {} MDNodeKeyImpl(const DIGlobalVariable *N) : Scope(N->getRawScope()), Name(N->getRawName()), @@ -1077,7 +1084,10 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> { Line(N->getLine()), Type(N->getRawType()), IsLocalToUnit(N->isLocalToUnit()), IsDefinition(N->isDefinition()), StaticDataMemberDeclaration(N->getRawStaticDataMemberDeclaration()), - TemplateParams(N->getRawTemplateParams()), Flags(N->getFlags()), + TemplateParams(N->getRawTemplateParams()), +#ifdef ENABLE_CLASSIC_FLANG + Flags(N->getFlags()), +#endif AlignInBits(N->getAlignInBits()), Annotations(N->getRawAnnotations()) {} bool isKeyOf(const DIGlobalVariable *RHS) const { @@ -1089,7 +1099,9 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> { StaticDataMemberDeclaration == RHS->getRawStaticDataMemberDeclaration() && TemplateParams == RHS->getRawTemplateParams() && +#ifdef ENABLE_CLASSIC_FLANG Flags == RHS->getFlags() && +#endif AlignInBits == RHS->getAlignInBits() && Annotations == RHS->getRawAnnotations(); } @@ -1104,7 +1116,11 @@ template <> struct MDNodeKeyImpl<DIGlobalVariable> { // TODO: make hashing work fine with such situations return hash_combine(Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, /* AlignInBits, */ - StaticDataMemberDeclaration, Flags, Annotations); + StaticDataMemberDeclaration, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + Annotations); } }; diff --git a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp index 136132d7e65a..343554241da3 100644 --- a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp @@ -1053,7 +1053,10 @@ InstrProfiling::getOrCreateRegionCounters(InstrProfInstBase *Inc) { /*LineNo=*/0, DB.createUnspecifiedType("Profile Data Type"), CounterPtr->hasLocalLinkage(), /*IsDefined=*/true, /*Expr=*/nullptr, /*Decl=*/nullptr, /*TemplateParams=*/nullptr, - /*Flags=*/DINode::FlagZero, /*AlignInBits=*/0, Annotations); +#ifdef ENABLE_CLASSIC_FLANG + /*Flags=*/DINode::FlagZero, +#endif + /*AlignInBits=*/0, Annotations); CounterPtr->addDebugInfo(DICounter); DB.finalize(); } else { diff --git a/llvm/tools/llvm-c-test/debuginfo.c b/llvm/tools/llvm-c-test/debuginfo.c index 906c96f1c24b..e1866443e762 100644 --- a/llvm/tools/llvm-c-test/debuginfo.c +++ b/llvm/tools/llvm-c-test/debuginfo.c @@ -64,7 +64,11 @@ int llvm_test_dibuilder(void) { LLVMDIBuilderCreateConstantValueExpression(DIB, 0); LLVMDIBuilderCreateGlobalVariableExpression( DIB, Module, "globalClass", 11, "", 0, File, 1, ClassTy, true, - GlobalClassValueExpr, NULL, LLVMDIFlagZero, 0); + GlobalClassValueExpr, NULL, +#ifdef ENABLE_CLASSIC_FLANG + LLVMDIFlagZero, +#endif + 0); LLVMMetadataRef Int64Ty = LLVMDIBuilderCreateBasicType(DIB, "Int64", 5, 64, 0, LLVMDIFlagZero); @@ -75,7 +79,11 @@ int llvm_test_dibuilder(void) { LLVMDIBuilderCreateConstantValueExpression(DIB, 0); LLVMDIBuilderCreateGlobalVariableExpression( DIB, Module, "global", 6, "", 0, File, 1, Int64TypeDef, true, - GlobalVarValueExpr, NULL, LLVMDIFlagZero, 0); + GlobalVarValueExpr, NULL, +#ifdef ENABLE_CLASSIC_FLANG + LLVMDIFlagZero, +#endif + 0); LLVMMetadataRef NameSpace = LLVMDIBuilderCreateNameSpace(DIB, Module, "NameSpace", 9, false); diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp index 4bce26851d2f..788d514ad366 100644 --- a/llvm/unittests/IR/MetadataTest.cpp +++ b/llvm/unittests/IR/MetadataTest.cpp @@ -2895,13 +2895,17 @@ TEST_F(DIGlobalVariableTest, get) { MDTuple *templateParams = getTuple(); DIDerivedType *StaticDataMemberDeclaration = cast<DIDerivedType>(getDerivedType()); - +#ifdef ENABLE_CLASSIC_FLANG DINode::DIFlags Flags = static_cast<DINode::DIFlags>(7); +#endif uint32_t AlignInBits = 8; auto *N = DIGlobalVariable::get( Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, - IsDefinition, StaticDataMemberDeclaration, templateParams, Flags, + IsDefinition, StaticDataMemberDeclaration, templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif AlignInBits, nullptr); EXPECT_EQ(dwarf::DW_TAG_variable, N->getTag()); @@ -2915,67 +2919,114 @@ TEST_F(DIGlobalVariableTest, get) { EXPECT_EQ(IsDefinition, N->isDefinition()); EXPECT_EQ(StaticDataMemberDeclaration, N->getStaticDataMemberDeclaration()); EXPECT_EQ(templateParams, N->getTemplateParams()); +#ifdef ENABLE_CLASSIC_FLANG EXPECT_EQ(Flags, N->getFlags()); +#endif EXPECT_EQ(AlignInBits, N->getAlignInBits()); EXPECT_EQ(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, - nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get( Context, getSubprogram(), Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, - StaticDataMemberDeclaration, templateParams, Flags, + StaticDataMemberDeclaration, templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, "other", LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, - nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, "other", File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, getFile(), Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line + 1, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, getDerivedType(), IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, !IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, !IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, cast<DIDerivedType>(getDerivedType()), - templateParams, Flags, AlignInBits, nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, nullptr, - Flags, AlignInBits, nullptr)); +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + AlignInBits, nullptr)); +#ifdef ENABLE_CLASSIC_FLANG EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, templateParams, static_cast<DINode::DIFlags>(Flags + 1), AlignInBits, nullptr)); +#endif EXPECT_NE(N, DIGlobalVariable::get(Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, IsDefinition, StaticDataMemberDeclaration, - templateParams, Flags, (AlignInBits << 1), - nullptr)); + templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif + (AlignInBits << 1), nullptr)); TempDIGlobalVariable Temp = N->clone(); EXPECT_EQ(N, MDNode::replaceWithUniqued(std::move(Temp))); @@ -2997,16 +3048,24 @@ TEST_F(DIGlobalVariableExpressionTest, get) { auto *Expr2 = DIExpression::get(Context, {1, 2, 3}); DIDerivedType *StaticDataMemberDeclaration = cast<DIDerivedType>(getDerivedType()); +#ifdef ENABLE_CLASSIC_FLANG DINode::DIFlags Flags = static_cast<DINode::DIFlags>(7); +#endif uint32_t AlignInBits = 8; auto *Var = DIGlobalVariable::get( Context, Scope, Name, LinkageName, File, Line, Type, IsLocalToUnit, - IsDefinition, StaticDataMemberDeclaration, templateParams, Flags, + IsDefinition, StaticDataMemberDeclaration, templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif AlignInBits, nullptr); auto *Var2 = DIGlobalVariable::get( Context, Scope, "other", LinkageName, File, Line, Type, IsLocalToUnit, - IsDefinition, StaticDataMemberDeclaration, templateParams, Flags, + IsDefinition, StaticDataMemberDeclaration, templateParams, +#ifdef ENABLE_CLASSIC_FLANG + Flags, +#endif AlignInBits, nullptr); auto *N = DIGlobalVariableExpression::get(Context, Var, Expr); diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py index d8dec6160071..69ede49dadc5 100644 --- a/llvm/utils/lit/lit/llvm/config.py +++ b/llvm/utils/lit/lit/llvm/config.py @@ -632,14 +632,15 @@ class LLVMConfig(object): ] self.add_tool_substitutions(tool_substitutions) self.config.substitutions.append(("%resource_dir", builtin_include_dir)) - - self.config.flang = self.use_llvm_tool( - 'flang', search_env='FLANG', required=required) - if self.config.flang: - tool_substitutions = [ - ToolSubst('%flang', command=self.config.flang) - ] - self.add_tool_substitutions(tool_substitutions) + use_classic_flang = getattr(self.config, "use_classic_flang", None) + if use_classic_flang and use_classic_flang != "@LLVM_ENABLE_CLASSIC_FLANG@": + self.config.flang = self.use_llvm_tool( + 'flang', search_env='FLANG', required=required) + if self.config.flang: + tool_substitutions = [ + ToolSubst('%flang', command=self.config.flang) + ] + self.add_tool_substitutions(tool_substitutions) self.config.substitutions.append( ( -- 2.24.3 (Apple Git-128)
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2