diff options
| author | Devang Patel <dpatel@apple.com> | 2011-05-27 19:13:26 +0000 | 
|---|---|---|
| committer | Devang Patel <dpatel@apple.com> | 2011-05-27 19:13:26 +0000 | 
| commit | 39e22eae49319c6b638a37b955483f3604371b5f (patch) | |
| tree | dfc06019bec1e54104b6a1a086a406c630fdee8c /llvm/lib/CodeGen/AsmPrinter | |
| parent | 03eef62db05b314ce560bcbe210d4015cd4731ff (diff) | |
| download | bcm5719-llvm-39e22eae49319c6b638a37b955483f3604371b5f.tar.gz bcm5719-llvm-39e22eae49319c6b638a37b955483f3604371b5f.zip | |
Keep this simple. Use DIType to get signness and size of a type. Based on size, select appropraite form.
llvm-svn: 132206
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 31 | 
1 files changed, 13 insertions, 18 deletions
| diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index e573965ebe7..212b0865e9d 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -445,25 +445,20 @@ bool CompileUnit::addConstantValue(DIE *Die, const MachineOperand &MO,    assert (MO.isImm() && "Invalid machine operand!");    DIEBlock *Block = new (DIEValueAllocator) DIEBlock();    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; +  } +    DIBasicType BTy(Ty); -  if (BTy.Verify()) { -    unsigned Encoding = BTy.getEncoding(); -    if (Encoding == dwarf::DW_ATE_signed || -        Encoding == dwarf::DW_ATE_signed_char) { -      form = dwarf::DW_FORM_sdata;  -      addSInt(Block, 0, dwarf::DW_FORM_sdata, MO.getImm()); -    } else { -      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, MO.getImm()); -    } -  } else -    //if this is not basic type then just use _udata. +  if (BTy.Verify() && +      (BTy.getEncoding()  == dwarf::DW_ATE_signed  +       || BTy.getEncoding() == dwarf::DW_ATE_signed_char)) +    addSInt(Block, 0, form, MO.getImm()); +  else      addUInt(Block, 0, form, MO.getImm());    addBlock(Die, dwarf::DW_AT_const_value, 0, Block); | 

