Fix for trunk after rev 223802
This commit is contained in:
40
cbackend.cpp
40
cbackend.cpp
@@ -137,9 +137,17 @@ namespace {
|
|||||||
TypeFinder(std::vector<llvm::ArrayType*> &t)
|
TypeFinder(std::vector<llvm::ArrayType*> &t)
|
||||||
: ArrayTypes(t) {}
|
: ArrayTypes(t) {}
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
void run(const llvm::Module &M) {
|
void run(const llvm::Module &M) {
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
void run(llvm::Module &M) {
|
||||||
|
#endif
|
||||||
// Get types from global variables.
|
// Get types from global variables.
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
for (llvm::Module::const_global_iterator I = M.global_begin(),
|
for (llvm::Module::const_global_iterator I = M.global_begin(),
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
for (llvm::Module::global_iterator I = M.global_begin(),
|
||||||
|
#endif
|
||||||
E = M.global_end(); I != E; ++I) {
|
E = M.global_end(); I != E; ++I) {
|
||||||
incorporateType(I->getType());
|
incorporateType(I->getType());
|
||||||
if (I->hasInitializer())
|
if (I->hasInitializer())
|
||||||
@@ -147,10 +155,18 @@ namespace {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get types from aliases.
|
// Get types from aliases.
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
for (llvm::Module::const_alias_iterator I = M.alias_begin(),
|
for (llvm::Module::const_alias_iterator I = M.alias_begin(),
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
for (llvm::Module::alias_iterator I = M.alias_begin(),
|
||||||
|
#endif
|
||||||
E = M.alias_end(); I != E; ++I) {
|
E = M.alias_end(); I != E; ++I) {
|
||||||
incorporateType(I->getType());
|
incorporateType(I->getType());
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
if (const llvm::Value *Aliasee = I->getAliasee())
|
if (const llvm::Value *Aliasee = I->getAliasee())
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
if (llvm::Value *Aliasee = I->getAliasee())
|
||||||
|
#endif
|
||||||
incorporateValue(Aliasee);
|
incorporateValue(Aliasee);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,8 +236,13 @@ namespace {
|
|||||||
/// types hiding in constant expressions and other operands that won't be
|
/// types hiding in constant expressions and other operands that won't be
|
||||||
/// walked in other ways. GlobalValues, basic blocks, instructions, and
|
/// walked in other ways. GlobalValues, basic blocks, instructions, and
|
||||||
/// inst operands are all explicitly enumerated.
|
/// inst operands are all explicitly enumerated.
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
void incorporateValue(const llvm::Value *V) {
|
void incorporateValue(const llvm::Value *V) {
|
||||||
if (const llvm::MDNode *M = llvm::dyn_cast<llvm::MDNode>(V))
|
if (const llvm::MDNode *M = llvm::dyn_cast<llvm::MDNode>(V))
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
void incorporateValue(llvm::Value *V) {
|
||||||
|
if (const llvm::MDNode *M = llvm::cast<llvm::MDNode>(llvm::ValueAsMetadata::get(V)))
|
||||||
|
#endif
|
||||||
return incorporateMDNode(M);
|
return incorporateMDNode(M);
|
||||||
if (!llvm::isa<llvm::Constant>(V) || llvm::isa<llvm::GlobalValue>(V)) return;
|
if (!llvm::isa<llvm::Constant>(V) || llvm::isa<llvm::GlobalValue>(V)) return;
|
||||||
|
|
||||||
@@ -242,18 +263,31 @@ namespace {
|
|||||||
void incorporateMDNode(const llvm::MDNode *V) {
|
void incorporateMDNode(const llvm::MDNode *V) {
|
||||||
|
|
||||||
// Already visited?
|
// Already visited?
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
if (!VisitedConstants.insert(V).second)
|
if (!VisitedConstants.insert(V).second)
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
if (!VisitedConstants.insert(llvm::cast<llvm::ValueAsMetadata>(V)->getValue()).second)
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Look in operands for types.
|
// Look in operands for types.
|
||||||
for (unsigned i = 0, e = V->getNumOperands(); i != e; ++i)
|
for (unsigned i = 0, e = V->getNumOperands(); i != e; ++i)
|
||||||
if (llvm::Value *Op = V->getOperand(i))
|
if (llvm::Value *Op =
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
|
V->getOperand(i))
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::cast<llvm::ValueAsMetadata>((V->getOperand(i)).get())->getValue())
|
||||||
|
#endif
|
||||||
incorporateValue(Op);
|
incorporateValue(Op);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // end anonymous namespace
|
} // end anonymous namespace
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
static void findUsedArrayTypes(const llvm::Module *m, std::vector<llvm::ArrayType*> &t) {
|
static void findUsedArrayTypes(const llvm::Module *m, std::vector<llvm::ArrayType*> &t) {
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
static void findUsedArrayTypes(llvm::Module *m, std::vector<llvm::ArrayType*> &t) {
|
||||||
|
#endif
|
||||||
TypeFinder(t).run(*m);
|
TypeFinder(t).run(*m);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +310,11 @@ namespace {
|
|||||||
llvm::IntrinsicLowering *IL;
|
llvm::IntrinsicLowering *IL;
|
||||||
//llvm::Mangler *Mang;
|
//llvm::Mangler *Mang;
|
||||||
llvm::LoopInfo *LI;
|
llvm::LoopInfo *LI;
|
||||||
|
#if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5)
|
||||||
const llvm::Module *TheModule;
|
const llvm::Module *TheModule;
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
llvm::Module *TheModule;
|
||||||
|
#endif
|
||||||
const llvm::MCAsmInfo* TAsm;
|
const llvm::MCAsmInfo* TAsm;
|
||||||
const llvm::MCRegisterInfo *MRI;
|
const llvm::MCRegisterInfo *MRI;
|
||||||
const llvm::MCObjectFileInfo *MOFI;
|
const llvm::MCObjectFileInfo *MOFI;
|
||||||
|
|||||||
21
ctx.cpp
21
ctx.cpp
@@ -2805,24 +2805,43 @@ FunctionEmitContext::addGSMetadata(llvm::Value *v, SourcePos pos) {
|
|||||||
llvm::Instruction *inst = llvm::dyn_cast<llvm::Instruction>(v);
|
llvm::Instruction *inst = llvm::dyn_cast<llvm::Instruction>(v);
|
||||||
if (inst == NULL)
|
if (inst == NULL)
|
||||||
return;
|
return;
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::Value *str = llvm::MDString::get(*g->ctx, pos.name);
|
llvm::Value *str = llvm::MDString::get(*g->ctx, pos.name);
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::MDString *str = llvm::MDString::get(*g->ctx, pos.name);
|
||||||
|
#endif
|
||||||
llvm::MDNode *md = llvm::MDNode::get(*g->ctx, str);
|
llvm::MDNode *md = llvm::MDNode::get(*g->ctx, str);
|
||||||
inst->setMetadata("filename", md);
|
inst->setMetadata("filename", md);
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::Value *first_line = LLVMInt32(pos.first_line);
|
llvm::Value *first_line = LLVMInt32(pos.first_line);
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::Metadata *first_line = llvm::ConstantAsMetadata::get(LLVMInt32(pos.first_line));
|
||||||
|
#endif
|
||||||
md = llvm::MDNode::get(*g->ctx, first_line);
|
md = llvm::MDNode::get(*g->ctx, first_line);
|
||||||
inst->setMetadata("first_line", md);
|
inst->setMetadata("first_line", md);
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::Value *first_column = LLVMInt32(pos.first_column);
|
llvm::Value *first_column = LLVMInt32(pos.first_column);
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::Metadata *first_column = llvm::ConstantAsMetadata::get(LLVMInt32(pos.first_column));
|
||||||
|
#endif
|
||||||
md = llvm::MDNode::get(*g->ctx, first_column);
|
md = llvm::MDNode::get(*g->ctx, first_column);
|
||||||
inst->setMetadata("first_column", md);
|
inst->setMetadata("first_column", md);
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::Value *last_line = LLVMInt32(pos.last_line);
|
llvm::Value *last_line = LLVMInt32(pos.last_line);
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::Metadata *last_line = llvm::ConstantAsMetadata::get(LLVMInt32(pos.last_line));
|
||||||
|
#endif
|
||||||
md = llvm::MDNode::get(*g->ctx, last_line);
|
md = llvm::MDNode::get(*g->ctx, last_line);
|
||||||
inst->setMetadata("last_line", md);
|
inst->setMetadata("last_line", md);
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::Value *last_column = LLVMInt32(pos.last_column);
|
llvm::Value *last_column = LLVMInt32(pos.last_column);
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::Metadata *last_column = llvm::ConstantAsMetadata::get(LLVMInt32(pos.last_column));
|
||||||
|
#endif
|
||||||
md = llvm::MDNode::get(*g->ctx, last_column);
|
md = llvm::MDNode::get(*g->ctx, last_column);
|
||||||
inst->setMetadata("last_column", md);
|
inst->setMetadata("last_column", md);
|
||||||
}
|
}
|
||||||
|
|||||||
13
module.cpp
13
module.cpp
@@ -200,7 +200,11 @@ lStripUnusedDebugInfo(llvm::Module *module) {
|
|||||||
}
|
}
|
||||||
if (scope.isSubprogram()) {
|
if (scope.isSubprogram()) {
|
||||||
// good, the chain ended with a function; adding
|
// good, the chain ended with a function; adding
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
SPall.insert(scope);
|
SPall.insert(scope);
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
SPall.insert(llvm::cast<llvm::ValueAsMetadata>(scope.get())->getValue());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -224,7 +228,11 @@ lStripUnusedDebugInfo(llvm::Module *module) {
|
|||||||
|
|
||||||
// determine what functions of those extracted belong to the unit
|
// determine what functions of those extracted belong to the unit
|
||||||
for (unsigned j = 0, je = subprograms.getNumElements(); j != je; ++j)
|
for (unsigned j = 0, je = subprograms.getNumElements(); j != je; ++j)
|
||||||
|
#if defined(LLVM_3_2) || defined(LLVM_3_3) || defined(LLVM_3_4) || defined(LLVM_3_5)
|
||||||
SPset.insert(subprograms->getOperand(j));
|
SPset.insert(subprograms->getOperand(j));
|
||||||
|
#else // LLVM 3.6+
|
||||||
|
SPset.insert(llvm::cast<llvm::ValueAsMetadata>((subprograms->getOperand(j)).get())->getValue());
|
||||||
|
#endif
|
||||||
|
|
||||||
std::set_intersection(SPall.begin(), SPall.end(),
|
std::set_intersection(SPall.begin(), SPall.end(),
|
||||||
SPset.begin(), SPset.end(),
|
SPset.begin(), SPset.end(),
|
||||||
@@ -293,7 +301,10 @@ lStripUnusedDebugInfo(llvm::Module *module) {
|
|||||||
|
|
||||||
// And now we can go and stuff it into the unit with some
|
// And now we can go and stuff it into the unit with some
|
||||||
// confidence...
|
// confidence...
|
||||||
llvm::MDNode *replNode = llvm::MDNode::get(module->getContext(), usedSubprograms);
|
std::vector<llvm::Metadata *> usedSubprograms_tmp;
|
||||||
|
for (int i = 0; i < usedSubprograms.size(); ++i)
|
||||||
|
usedSubprograms_tmp.at(i) = llvm::ValueAsMetadata::get(usedSubprograms.at(i));
|
||||||
|
llvm::MDNode *replNode = llvm::MDNode::get(module->getContext(), usedSubprograms_tmp);
|
||||||
cu.replaceSubprograms(llvm::DIArray(replNode));
|
cu.replaceSubprograms(llvm::DIArray(replNode));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
19
opt.cpp
19
opt.cpp
@@ -230,16 +230,35 @@ lGetSourcePosFromMetadata(const llvm::Instruction *inst, SourcePos *pos) {
|
|||||||
llvm::MDString *str = llvm::dyn_cast<llvm::MDString>(filename->getOperand(0));
|
llvm::MDString *str = llvm::dyn_cast<llvm::MDString>(filename->getOperand(0));
|
||||||
Assert(str);
|
Assert(str);
|
||||||
llvm::ConstantInt *first_lnum =
|
llvm::ConstantInt *first_lnum =
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::dyn_cast<llvm::ConstantInt>(first_line->getOperand(0));
|
llvm::dyn_cast<llvm::ConstantInt>(first_line->getOperand(0));
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::mdconst::extract<llvm::ConstantInt>(first_line->getOperand(0));
|
||||||
|
#endif
|
||||||
Assert(first_lnum);
|
Assert(first_lnum);
|
||||||
|
|
||||||
llvm::ConstantInt *first_colnum =
|
llvm::ConstantInt *first_colnum =
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::dyn_cast<llvm::ConstantInt>(first_column->getOperand(0));
|
llvm::dyn_cast<llvm::ConstantInt>(first_column->getOperand(0));
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::mdconst::extract<llvm::ConstantInt>(first_column->getOperand(0));
|
||||||
|
#endif
|
||||||
Assert(first_column);
|
Assert(first_column);
|
||||||
|
|
||||||
llvm::ConstantInt *last_lnum =
|
llvm::ConstantInt *last_lnum =
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::dyn_cast<llvm::ConstantInt>(last_line->getOperand(0));
|
llvm::dyn_cast<llvm::ConstantInt>(last_line->getOperand(0));
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::mdconst::extract<llvm::ConstantInt>(last_line->getOperand(0));
|
||||||
|
#endif
|
||||||
Assert(last_lnum);
|
Assert(last_lnum);
|
||||||
|
|
||||||
llvm::ConstantInt *last_colnum =
|
llvm::ConstantInt *last_colnum =
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3)|| defined (LLVM_3_4)|| defined (LLVM_3_5)
|
||||||
llvm::dyn_cast<llvm::ConstantInt>(last_column->getOperand(0));
|
llvm::dyn_cast<llvm::ConstantInt>(last_column->getOperand(0));
|
||||||
|
#else // LLVN 3.6++
|
||||||
|
llvm::mdconst::extract<llvm::ConstantInt>(last_column->getOperand(0));
|
||||||
|
#endif
|
||||||
Assert(last_column);
|
Assert(last_column);
|
||||||
|
|
||||||
*pos = SourcePos(str->getString().data(), (int)first_lnum->getZExtValue(),
|
*pos = SourcePos(str->getString().data(), (int)first_lnum->getZExtValue(),
|
||||||
|
|||||||
43
type.cpp
43
type.cpp
@@ -91,13 +91,19 @@ lCreateDIArray(llvm::DIType eltType, int count) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(lowerBound, upperBound);
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(lowerBound, upperBound);
|
||||||
#else // LLVM 3.3+
|
#elif defined (LLVM_3_3)|| defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, count);
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, count);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3) || defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
std::vector<llvm::Value *> subs;
|
std::vector<llvm::Value *> subs;
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
llvm::Metadata *sub = m->diBuilder->getOrCreateSubrange(0, count);
|
||||||
|
std::vector<llvm::Metadata *> subs;
|
||||||
|
#endif
|
||||||
subs.push_back(sub);
|
subs.push_back(sub);
|
||||||
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(subs);
|
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(subs);
|
||||||
|
|
||||||
uint64_t size = eltType.getSizeInBits() * count;
|
uint64_t size = eltType.getSizeInBits() * count;
|
||||||
uint64_t align = eltType.getAlignInBits();
|
uint64_t align = eltType.getAlignInBits();
|
||||||
|
|
||||||
@@ -571,8 +577,10 @@ AtomicType::GetDIType(llvm::DIDescriptor scope) const {
|
|||||||
llvm::DIType unifType = GetAsUniformType()->GetDIType(scope);
|
llvm::DIType unifType = GetAsUniformType()->GetDIType(scope);
|
||||||
#ifdef LLVM_3_2
|
#ifdef LLVM_3_2
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth()-1);
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth()-1);
|
||||||
#else // LLVM 3.3+
|
#elif defined (LLVM_3_3)|| defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth());
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth());
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
llvm::Metadata *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth());
|
||||||
#endif
|
#endif
|
||||||
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(sub);
|
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(sub);
|
||||||
uint64_t size = unifType.getSizeInBits() * g->target->getVectorWidth();
|
uint64_t size = unifType.getSizeInBits() * g->target->getVectorWidth();
|
||||||
@@ -810,14 +818,21 @@ EnumType::LLVMType(llvm::LLVMContext *ctx) const {
|
|||||||
|
|
||||||
llvm::DIType
|
llvm::DIType
|
||||||
EnumType::GetDIType(llvm::DIDescriptor scope) const {
|
EnumType::GetDIType(llvm::DIDescriptor scope) const {
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3) || defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
std::vector<llvm::Value *> enumeratorDescriptors;
|
std::vector<llvm::Value *> enumeratorDescriptors;
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
std::vector<llvm::Metadata *> enumeratorDescriptors;
|
||||||
|
#endif
|
||||||
for (unsigned int i = 0; i < enumerators.size(); ++i) {
|
for (unsigned int i = 0; i < enumerators.size(); ++i) {
|
||||||
unsigned int enumeratorValue;
|
unsigned int enumeratorValue;
|
||||||
Assert(enumerators[i]->constValue != NULL);
|
Assert(enumerators[i]->constValue != NULL);
|
||||||
int count = enumerators[i]->constValue->GetValues(&enumeratorValue);
|
int count = enumerators[i]->constValue->GetValues(&enumeratorValue);
|
||||||
Assert(count == 1);
|
Assert(count == 1);
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3) || defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
llvm::Value *descriptor =
|
llvm::Value *descriptor =
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
llvm::Metadata *descriptor =
|
||||||
|
#endif
|
||||||
m->diBuilder->createEnumerator(enumerators[i]->name, enumeratorValue);
|
m->diBuilder->createEnumerator(enumerators[i]->name, enumeratorValue);
|
||||||
enumeratorDescriptors.push_back(descriptor);
|
enumeratorDescriptors.push_back(descriptor);
|
||||||
}
|
}
|
||||||
@@ -840,8 +855,10 @@ EnumType::GetDIType(llvm::DIDescriptor scope) const {
|
|||||||
case Variability::Varying: {
|
case Variability::Varying: {
|
||||||
#ifdef LLVM_3_2
|
#ifdef LLVM_3_2
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth()-1);
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth()-1);
|
||||||
#else // LLVM 3.3+
|
#elif defined (LLVM_3_3)|| defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth());
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth());
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
llvm::Metadata *sub = m->diBuilder->getOrCreateSubrange(0, g->target->getVectorWidth());
|
||||||
#endif
|
#endif
|
||||||
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(sub);
|
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(sub);
|
||||||
uint64_t size = diType.getSizeInBits() * g->target->getVectorWidth();
|
uint64_t size = diType.getSizeInBits() * g->target->getVectorWidth();
|
||||||
@@ -1733,8 +1750,10 @@ VectorType::GetDIType(llvm::DIDescriptor scope) const {
|
|||||||
llvm::DIType eltType = base->GetDIType(scope);
|
llvm::DIType eltType = base->GetDIType(scope);
|
||||||
#ifdef LLVM_3_2
|
#ifdef LLVM_3_2
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, numElements-1);
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, numElements-1);
|
||||||
#else // LLVM 3.3+
|
#elif defined (LLVM_3_3)|| defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, numElements);
|
llvm::Value *sub = m->diBuilder->getOrCreateSubrange(0, numElements);
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
llvm::Metadata *sub = m->diBuilder->getOrCreateSubrange(0, numElements);
|
||||||
#endif
|
#endif
|
||||||
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(sub);
|
llvm::DIArray subArray = m->diBuilder->getOrCreateArray(sub);
|
||||||
|
|
||||||
@@ -2156,8 +2175,11 @@ StructType::LLVMType(llvm::LLVMContext *ctx) const {
|
|||||||
llvm::DIType
|
llvm::DIType
|
||||||
StructType::GetDIType(llvm::DIDescriptor scope) const {
|
StructType::GetDIType(llvm::DIDescriptor scope) const {
|
||||||
uint64_t currentSize = 0, align = 0;
|
uint64_t currentSize = 0, align = 0;
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3) || defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
std::vector<llvm::Value *> elementLLVMTypes;
|
std::vector<llvm::Value *> elementLLVMTypes;
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
std::vector<llvm::Metadata *> elementLLVMTypes;
|
||||||
|
#endif
|
||||||
// Walk through the elements of the struct; for each one figure out its
|
// Walk through the elements of the struct; for each one figure out its
|
||||||
// alignment and size, using that to figure out its offset w.r.t. the
|
// alignment and size, using that to figure out its offset w.r.t. the
|
||||||
// start of the structure.
|
// start of the structure.
|
||||||
@@ -2975,8 +2997,11 @@ FunctionType::LLVMType(llvm::LLVMContext *ctx) const {
|
|||||||
|
|
||||||
llvm::DIType
|
llvm::DIType
|
||||||
FunctionType::GetDIType(llvm::DIDescriptor scope) const {
|
FunctionType::GetDIType(llvm::DIDescriptor scope) const {
|
||||||
|
#if defined (LLVM_3_2) || defined (LLVM_3_3) || defined (LLVM_3_4) || defined (LLVM_3_5)
|
||||||
std::vector<llvm::Value *> retArgTypes;
|
std::vector<llvm::Value *> retArgTypes;
|
||||||
|
#else // LLVM 3.6++
|
||||||
|
std::vector<llvm::Metadata *> retArgTypes;
|
||||||
|
#endif
|
||||||
retArgTypes.push_back(returnType->GetDIType(scope));
|
retArgTypes.push_back(returnType->GetDIType(scope));
|
||||||
for (int i = 0; i < GetNumParameters(); ++i) {
|
for (int i = 0; i < GetNumParameters(); ++i) {
|
||||||
const Type *t = GetParameterType(i);
|
const Type *t = GetParameterType(i);
|
||||||
@@ -2992,7 +3017,7 @@ FunctionType::GetDIType(llvm::DIDescriptor scope) const {
|
|||||||
|
|
||||||
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) // LLVM 3.6+
|
#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) && !defined(LLVM_3_5) // LLVM 3.6+
|
||||||
llvm::DITypeArray retArgTypesArray =
|
llvm::DITypeArray retArgTypesArray =
|
||||||
m->diBuilder->getOrCreateTypeArray(llvm::ArrayRef<llvm::Value *>(retArgTypes));
|
m->diBuilder->getOrCreateTypeArray(retArgTypes);
|
||||||
#else
|
#else
|
||||||
llvm::DIArray retArgTypesArray =
|
llvm::DIArray retArgTypesArray =
|
||||||
m->diBuilder->getOrCreateArray(llvm::ArrayRef<llvm::Value *>(retArgTypes));
|
m->diBuilder->getOrCreateArray(llvm::ArrayRef<llvm::Value *>(retArgTypes));
|
||||||
|
|||||||
Reference in New Issue
Block a user