diff options
author | Devang Patel <dpatel@apple.com> | 2011-05-27 16:45:18 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2011-05-27 16:45:18 +0000 |
commit | 3c6aed2d98f0213cd52ca90df40dd74ceb0302a8 (patch) | |
tree | 8b28d116f0f5a2defe8d325e9444146d1462270f /llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | |
parent | 0373d007e9324bf144838bcbe229264794bf024d (diff) | |
download | llvm-3c6aed2d98f0213cd52ca90df40dd74ceb0302a8.zip llvm-3c6aed2d98f0213cd52ca90df40dd74ceb0302a8.tar.gz llvm-3c6aed2d98f0213cd52ca90df40dd74ceb0302a8.tar.bz2 |
Select DW_AT_const_value size based on variable size.
llvm-svn: 132193
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index df3a4aa..ec6954e3 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -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; } |