Select DW_AT_const_value size based on variable size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132193 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devang Patel
2011-05-27 16:45:18 +00:00
parent 25b15d8502
commit b58128e2b2
4 changed files with 44 additions and 5 deletions

View File

@ -440,11 +440,20 @@ void CompileUnit::addBlockByrefAddress(DbgVariable *&DV, DIE *Die,
}
/// addConstantValue - Add constant value entry in variable DIE.
bool CompileUnit::addConstantValue(DIE *Die, const MachineOperand &MO) {
bool CompileUnit::addConstantValue(DIE *Die, const MachineOperand &MO,
DIType Ty) {
assert (MO.isImm() && "Invalid machine operand!");
DIEBlock *Block = new (DIEValueAllocator) DIEBlock();
unsigned Imm = MO.getImm();
addUInt(Block, 0, dwarf::DW_FORM_udata, Imm);
unsigned form = dwarf::DW_FORM_udata;
switch (Ty.getSizeInBits()) {
case 8: form = dwarf::DW_FORM_data1; break;
case 16: form = dwarf::DW_FORM_data2; break;
case 32: form = dwarf::DW_FORM_data4; break;
case 64: form = dwarf::DW_FORM_data8; break;
default: break;
}
addUInt(Block, 0, form, Imm);
addBlock(Die, dwarf::DW_AT_const_value, 0, Block);
return true;
}