[cfe-commits] r139443 - in /cfe/trunk: lib/CodeGen/CGDebugInfo.cpp test/CodeGenCXX/debug-info-wchar.cpp

Devang Patel dpatel at apple.com
Fri Sep 9 17:59:08 PDT 2011


I did not know this, I'll fix the patch.

-
Devang

On Sep 9, 2011, at 5:54 PM, Douglas Gregor <dgregor at apple.com> wrote:

> 
> On Sep 9, 2011, at 5:44 PM, Devang Patel wrote:
> 
>> Author: dpatel
>> Date: Fri Sep  9 19:44:49 2011
>> New Revision: 139443
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=139443&view=rev
>> Log:
>> Emit debug info for wchar_t.
>> 
>> Added:
>>   cfe/trunk/test/CodeGenCXX/debug-info-wchar.cpp
>> Modified:
>>   cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
>> 
>> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=139443&r1=139442&r2=139443&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri Sep  9 19:44:49 2011
>> @@ -333,16 +333,20 @@
>>  case BuiltinType::UChar:
>>  case BuiltinType::Char_U: Encoding = llvm::dwarf::DW_ATE_unsigned_char; break;
>>  case BuiltinType::Char_S:
>> +  case BuiltinType::Char16:
>> +  case BuiltinType::Char32:
>>  case BuiltinType::SChar: Encoding = llvm::dwarf::DW_ATE_signed_char; break;
> 
> char16_t and char32_t aren't simply signed character types. They are distinct types that need their own encoding. See, for example
> 
>    http://dwarfstd.org/ShowIssue.php?issue=090109.1&type=closed3
> 
>>  case BuiltinType::UShort:
>>  case BuiltinType::UInt:
>>  case BuiltinType::UInt128:
>>  case BuiltinType::ULong:
>> +  case BuiltinType::WChar_U:
>>  case BuiltinType::ULongLong: Encoding = llvm::dwarf::DW_ATE_unsigned; break;
>>  case BuiltinType::Short:
>>  case BuiltinType::Int:
>>  case BuiltinType::Int128:
>>  case BuiltinType::Long:
>> +  case BuiltinType::WChar_S:
>>  case BuiltinType::LongLong:  Encoding = llvm::dwarf::DW_ATE_signed; break;
>>  case BuiltinType::Bool:      Encoding = llvm::dwarf::DW_ATE_boolean; break;
>>  case BuiltinType::Float:
> 
> wchar_t is also its own distinct type, which DWARF encodes as DW_ATE_wchar_t. It's not simply a signed or unsigned value.
> 
>    - Doug
> 



More information about the cfe-commits mailing list