Support C99 designed initializers.

Standard C89 and C++ require the elements of an initializer to appear in a fixed order, the same as the order of the elements in the array or structure being initialized.

In ISO C99 you can give the elements in any order, specifying the array indices or structure field names they apply to.
To specify an array index, write `[index] =' before the element value. For example,

     int a[6] = { [4] = 29, [2] = 15 };

Gcc also adds an extension to initialize a range of elements to the same value, by writing `[first ... last] = value'. For example,

     int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

In a structure initializer, specify the name of a field to initialize with `.fieldname =' before the element value. For example,

     struct point { int x, y; };
     struct point p = { .y = yvalue, .x = xvalue };