Changeset View
Changeset View
Standalone View
Standalone View
lib/IR/DIBuilder.cpp
Context not available. | |||||
Elts.push_back(Constant::getNullValue(Type::getInt32Ty(VMContext))); | Elts.push_back(Constant::getNullValue(Type::getInt32Ty(VMContext))); | ||||
Elts.push_back(Constant::getNullValue(Type::getInt32Ty(VMContext))); | Elts.push_back(Constant::getNullValue(Type::getInt32Ty(VMContext))); | ||||
Elts.append(Addr.begin(), Addr.end()); | Elts.append(Addr.begin(), Addr.end()); | ||||
return DIVariable(MDNode::get(VMContext, Elts)); | |||||
} | |||||
/// createVariablePiece - Create a descriptor to describe one part | |||||
/// of aggregate variable that is fragmented across multiple Values. | |||||
DIVariable DIBuilder::createVariablePiece(DIVariable Variable, | |||||
unsigned OffsetInBytes, | |||||
unsigned SizeInBytes) { | |||||
assert(SizeInBytes > 0 && "zero-size piece"); | |||||
SmallVector<Value *, 8> Elts; | |||||
for (unsigned i = 0; i < Variable->getNumOperands(); ++i) | |||||
Elts.push_back(Variable->getOperand(i)); | |||||
SmallVector<Value *, 3> Expr; | |||||
Expr.push_back(ConstantInt::get(Type::getInt32Ty(VMContext), OpPiece)); | |||||
Expr.push_back(ConstantInt::get(Type::getInt32Ty(VMContext), OffsetInBytes)); | |||||
Expr.push_back(ConstantInt::get(Type::getInt32Ty(VMContext), SizeInBytes)); | |||||
Elts.push_back(MDNode::get(VMContext, Expr)); | |||||
return DIVariable(MDNode::get(VMContext, Elts)); | return DIVariable(MDNode::get(VMContext, Elts)); | ||||
} | } | ||||
Context not available. |