If a static member is an array, the translation unit containing the member definition may have a more specific type (including its length) than TUs only seeing the class declaration. This patch adds a DW_AT_type to the member's DW_TAG_variable in addition to the DW_AT_specification in these cases. The member type in the DW_AT_specification still shows the more generic type (without the length) to avoid defeating type uniquing.
The DWARF standard discourages “duplicating” a DW_AT_type in a member variable definition but doesn’t explicitly forbid it.
Having the more specific type (with the array length) available is what allows the debugger to print the contents of a static array member variable.
rdar://problem/28706946
The subrange must be a child of the array_type, so you should also CHECK-NOT: NULL here.