Trunk fix for Rev.280686.

This commit is contained in:
Andrey Shishpanov
2016-09-07 13:08:04 +03:00
parent f968bc1b2a
commit d0341754d6
2 changed files with 33 additions and 2 deletions

21
ctx.cpp
View File

@@ -385,10 +385,14 @@ FunctionEmitContext::FunctionEmitContext(Function *func, Symbol *funSym,
llvm::DISubroutineType *diSubprogramType_n =
llvm::cast<llvm::DISubroutineType>(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<llvm::DISubroutineType>(diSubprogramType));
llvm::DISubroutineType *diSubprogramType_n = llvm::cast<llvm::DISubroutineType>(diSubprogramType);
int flags = llvm::DINode::FlagPrototyped;
#else /* LLVM 4.0+ */
Assert(llvm::isa<llvm::DISubroutineType>(diSubprogramType));
llvm::DISubroutineType *diSubprogramType_n = llvm::cast<llvm::DISubroutineType>(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);

View File

@@ -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+