Let init_putz one-time generation.
authorjiang <30155751@qq.com>
Wed, 28 May 2014 14:09:49 +0000 (22:09 +0800)
committerjiang <30155751@qq.com>
Wed, 28 May 2014 14:09:49 +0000 (22:09 +0800)
commitd316836008f4738d5a020b28aa33e96a82a81aca
tree81587e8c90b3c4f6c4c4e5d379ab37c30fb9c4af
parent89134dd7b021389331d91e0552babf6de5108588
Let init_putz one-time generation.
At the same time, increase the GCC style warning
---------------------------------------------------------------------------
int main()
{
int a[10] = {[5]=5};
return 0;
}

Disassembly of section .text:

0000000000000000 <main>:
   0: 55                    push   %rbp
   1: 48 89 e5              mov    %rsp,%rbp
   4: 48 81 ec 30 00 00 00  sub    $0x30,%rsp
   b: b8 05 00 00 00        mov    $0x5,%eax
  10: 89 45 ec              mov    %eax,-0x14(%rbp)
  13: 48 b8 14 00 00 00 00  movabs $0x14,%rax
  1a: 00 00 00
  1d: 49 89 c2              mov    %rax,%r10
  20: b8 00 00 00 00        mov    $0x0,%eax
  25: 48 89 c6              mov    %rax,%rsi
  28: 48 8d 45 d8           lea    -0x28(%rbp),%rax
  2c: 48 89 c7              mov    %rax,%rdi
  2f: 4c 89 d2              mov    %r10,%rdx
  32: b8 00 00 00 00        mov    $0x0,%eax
  37: e8 fc ff ff ff        callq  38 <main+0x38>
  3c: 48 b8 10 00 00 00 00  movabs $0x10,%rax
  43: 00 00 00
  46: 49 89 c2              mov    %rax,%r10
  49: b8 00 00 00 00        mov    $0x0,%eax
  4e: 48 89 c6              mov    %rax,%rsi
  51: 48 8d 45 f0           lea    -0x10(%rbp),%rax
  55: 48 89 c7              mov    %rax,%rdi
  58: 4c 89 d2              mov    %r10,%rdx
  5b: b8 00 00 00 00        mov    $0x0,%eax
  60: e8 fc ff ff ff        callq  61 <main+0x61>
  65: b8 00 00 00 00        mov    $0x0,%eax
  6a: e9 00 00 00 00        jmpq   6f <main+0x6f>
  6f: c9                    leaveq
  70: c3                    retq

After the patch

0000000000000000 <main>:
   0: 55                    push   %rbp
   1: 48 89 e5              mov    %rsp,%rbp
   4: 48 81 ec 30 00 00 00  sub    $0x30,%rsp
   b: 48 b8 28 00 00 00 00  movabs $0x28,%rax
  12: 00 00 00
  15: 49 89 c2              mov    %rax,%r10
  18: b8 00 00 00 00        mov    $0x0,%eax
  1d: 48 89 c6              mov    %rax,%rsi
  20: 48 8d 45 d8           lea    -0x28(%rbp),%rax
  24: 48 89 c7              mov    %rax,%rdi
  27: 4c 89 d2              mov    %r10,%rdx
  2a: b8 00 00 00 00        mov    $0x0,%eax
  2f: e8 fc ff ff ff        callq  30 <main+0x30>
  34: b8 05 00 00 00        mov    $0x5,%eax
  39: 89 45 ec              mov    %eax,-0x14(%rbp)
  3c: b8 00 00 00 00        mov    $0x0,%eax
  41: e9 00 00 00 00        jmpq   46 <main+0x46>
  46: c9                    leaveq
  47: c3                    retq
 -----------------------------------------------------------------------------------
"c5.c"
int main()
{
  // union st
   struct st
   {
    char c;
    short s;
   // char cc[];
    };
   // union st
  struct st
    ss = { 1, 2, 3};
   // int a = ss;
    char cb[1] = {1,2,3};
    return 0;
}

c5.c:12: warning: excess elements in struct initializer
c5.c:14: warning: excess elements in array initializer
c5.c:14: warning: excess elements in array initializer
tccgen.c