[llvm-commits] [llvm] r132197 - /llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp

Devang Patel dpatel at apple.com
Fri May 27 11:53:36 PDT 2011


On May 27, 2011, at 11:42 AM, Eli Friedman wrote:

> On Fri, May 27, 2011 at 11:15 AM, Devang Patel <dpatel at apple.com> wrote:
>> Author: dpatel
>> Date: Fri May 27 13:15:52 2011
>> New Revision: 132197
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=132197&view=rev
>> Log:
>> Handle signed types gracefully.
>> This fixes regressions reported by buildbots as a fallout of r132193.
> 
> Still broken; see
> http://smooshlab.apple.com:8013/builders/clang-x86_64-darwin10-gcc42-RA/builds/3462/steps/run.llvm.tests/logs/LLVM%20%3A%3A%20CodeGen___X86___dbg-const-int.ll
> 

I am investigating this.
-
Devang
> -Eli
> 
>> Modified:
>>    llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>> 
>> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=132197&r1=132196&r2=132197&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Fri May 27 13:15:52 2011
>> @@ -444,16 +444,28 @@
>>                                    DIType Ty) {
>>   assert (MO.isImm() && "Invalid machine operand!");
>>   DIEBlock *Block = new (DIEValueAllocator) DIEBlock();
>> -  unsigned Imm = MO.getImm();
>>   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);
>> +  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.
>> +    addUInt(Block, 0, form, MO.getImm());
>> +
>>   addBlock(Die, dwarf::DW_AT_const_value, 0, Block);
>>   return true;
>>  }
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110527/9fe9fd94/attachment.html>


More information about the llvm-commits mailing list