Какой C99-компилятор (Clang vs. GCC) ближе к стандарту в полях const структуры?

У меня есть такой код:

$ cat test.c 
#include 
typedef struct
{
    const int x;
} SX;

static SX mksx(void)
{
    return (SX) { .x = 10 };
}

void fn(void)
{
    SX sx;
    while((sx = mksx()).x != 20)
    {
        printf("stupid code!");
    }
}

И 2 мнения о его правильности:

$ for i in gcc clang; do echo "$i SAYS:"; $i -c -std=c99 -pedantic -Werror test.c; done
gcc SAYS:
test.c: In function ‘fn’:
test.c:15:2: error: assignment of read-only variable ‘sx’
  while((sx = mksx()).x != 20)
  ^
clang SAYS:

Какой компилятор прав?

Ответы на вопрос(2)

Ваш ответ на вопрос