DW_TAG_base_type missing DW_AT_name for subrange types

Hi,

ctfconvert is particularly unhappy about that (e.g., ERROR: ctfconvert: die 141: base type without name). Is it intended behavior?

Simple testcase:

int
main(void)
{
         int i[2];

         return 0;
}

dwarfdump output:

clang version 3.0 (tags/RELEASE_30/final):
[...]
LOCAL_SYMBOLS:
[...]
<3>< 120> DW_TAG_variable
                 DW_AT_name i
                 DW_AT_decl_file 1 /home/yuri/test.c
                 DW_AT_decl_line 4
                 DW_AT_type <144>
                 DW_AT_location DW_OP_fbreg 0
<1>< 134> DW_TAG_base_type
                 DW_AT_name int
                 DW_AT_encoding DW_ATE_signed
                 DW_AT_byte_size 4
<1>< 141> DW_TAG_base_type
                 DW_AT_byte_size 4
                 DW_AT_encoding DW_ATE_signed
<1>< 144> DW_TAG_array_type
                 DW_AT_type <134>
<2>< 149> DW_TAG_subrange_type
                 DW_AT_type <141>
                 DW_AT_upper_bound <141>1
[...]

gcc 3/4:
[...]
LOCAL_SYMBOLS:
[...]
<2>< 66> DW_TAG_variable
                 DW_AT_name i
                 DW_AT_decl_file 1 /home/yuri/test.c
                 DW_AT_decl_line 4
                 DW_AT_type <86>
                 DW_AT_location DW_OP_fbreg -16
<1>< 79> DW_TAG_base_type
                 DW_AT_byte_size 4
                 DW_AT_encoding DW_ATE_signed
                 DW_AT_name int
<1>< 86> DW_TAG_array_type
                 DW_AT_type <79>
                 DW_AT_sibling <102>
<2>< 95> DW_TAG_subrange_type
                 DW_AT_type <102>
                 DW_AT_upper_bound <102>1
<1>< 102> DW_TAG_base_type
                 DW_AT_byte_size 4
                 DW_AT_encoding DW_ATE_unsigned
                 DW_AT_name unsigned int
[...]