From d0341754d622668241e880577606775618a36090 Mon Sep 17 00:00:00 2001 From: Andrey Shishpanov Date: Wed, 7 Sep 2016 13:08:04 +0300 Subject: [PATCH] Trunk fix for Rev.280686. --- ctx.cpp | 21 +++++++++++++++++++-- type.cpp | 14 ++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/ctx.cpp b/ctx.cpp index 6f5f002f..09a124cb 100644 --- a/ctx.cpp +++ b/ctx.cpp @@ -385,10 +385,14 @@ FunctionEmitContext::FunctionEmitContext(Function *func, Symbol *funSym, llvm::DISubroutineType *diSubprogramType_n = llvm::cast(getDICompositeType(diSubprogramType)); int flags = llvm::DINode::FlagPrototyped; -#else /* LLVM 3.8+ */ +#elif ISPC_LLVM_VERSION == ISPC_LLVM_3_8 || ISPC_LLVM_VERSION == ISPC_LLVM_3_9 /* LLVM 3.8, 3.9 */ Assert(llvm::isa(diSubprogramType)); llvm::DISubroutineType *diSubprogramType_n = llvm::cast(diSubprogramType); int flags = llvm::DINode::FlagPrototyped; +#else /* LLVM 4.0+ */ + Assert(llvm::isa(diSubprogramType)); + llvm::DISubroutineType *diSubprogramType_n = llvm::cast(diSubprogramType); + llvm::DINode::DIFlags flags = llvm::DINode::FlagPrototyped; #endif @@ -417,7 +421,16 @@ FunctionEmitContext::FunctionEmitContext(Function *func, Symbol *funSym, isStatic, true, /* is defn */ firstLine, flags, isOptimized, llvmFunction); -#else /* LLVM 3.8+ */ +#elif ISPC_LLVM_VERSION == ISPC_LLVM_3_8 || ISPC_LLVM_VERSION == ISPC_LLVM_3_9 /* LLVM 3.8, 3.9 */ + diSubprogram = + m->diBuilder->createFunction(diFile /* scope */, funSym->name, + mangledName, diFile, + firstLine, diSubprogramType_n, + isStatic, true, /* is defn */ + firstLine, flags, + isOptimized); + llvmFunction->setSubprogram(diSubprogram); +#else /* LLVM 4.0+ */ diSubprogram = m->diBuilder->createFunction(diFile /* scope */, funSym->name, mangledName, diFile, @@ -1821,7 +1834,11 @@ FunctionEmitContext::EmitFunctionParameterDebugInfo(Symbol *sym, int argNum) { if (m->diBuilder == NULL) return; +#if ISPC_LLVM_VERSION <= ISPC_LLVM_3_9 int flags = 0; +#else // LLVM 4.0+ + llvm::DINode::DIFlags flags = llvm::DINode::FlagZero; +#endif #if ISPC_LLVM_VERSION <= ISPC_LLVM_3_6 /* 3.2, 3.3, 3.4, 3.5, 3.6 */ llvm::DIScope scope = diSubprogram; llvm::DIType diType = sym->type->GetDIType(scope); diff --git a/type.cpp b/type.cpp index b4b59ba4..523d069c 100644 --- a/type.cpp +++ b/type.cpp @@ -2307,9 +2307,15 @@ llvm::DIType *StructType::GetDIType(llvm::DIScope *scope) const { llvm::DIFile *diFile = elementPositions[i].GetDIFile(); llvm::DIDerivedType *fieldType = #endif +#if ISPC_LLVM_VERSION <= ISPC_LLVM_3_9 m->diBuilder->createMemberType(scope, elementNames[i], diFile, line, eltSize, eltAlign, currentSize, 0, eltType); +#else // LLVM 4.0+ + m->diBuilder->createMemberType(scope, elementNames[i], diFile, + line, eltSize, eltAlign, + currentSize, llvm::DINode::FlagZero, eltType); +#endif elementLLVMTypes.push_back(fieldType); currentSize += eltSize; @@ -2334,7 +2340,11 @@ llvm::DIType *StructType::GetDIType(llvm::DIScope *scope) const { pos.first_line, // Line number currentSize, // Size in bits align, // Alignment in bits +#if ISPC_LLVM_VERSION <= ISPC_LLVM_3_9 0, // Flags +#else // LLVM 4.0+ + llvm::DINode::FlagZero, // Flags +#endif #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_3 && ISPC_LLVM_VERSION <= ISPC_LLVM_3_6 llvm::DIType(), // DerivedFrom #elif ISPC_LLVM_VERSION >= ISPC_LLVM_3_7 // LLVM 3.7++ @@ -2584,7 +2594,11 @@ llvm::DIType *UndefinedStructType::GetDIType(llvm::DIScope *scope) const { pos.first_line, // Line number 0, // Size 0, // Align +#if ISPC_LLVM_VERSION <= ISPC_LLVM_3_9 0, // Flags +#else // LLVM 4.0+ + llvm::DINode::FlagZero, // Flags +#endif #if ISPC_LLVM_VERSION >= ISPC_LLVM_3_3 && ISPC_LLVM_VERSION <= ISPC_LLVM_3_6 llvm::DIType(), // DerivedFrom #elif ISPC_LLVM_VERSION >= ISPC_LLVM_3_7 // LLVM 3.7+