Remove unnecessary zero-ing of variables.
Remove unnecessary zero-ing of variables.

We used to emit two writes for a varible having an initializer.
The first write is to zero-out the memory for the variable.
The second write is to set the initial value.

The reason why we did that is because the C spec requires
unspecified fields be initialized with zero if a variable
has an initializer. For example, the contents of the following
variable v are 1 followed by two zeros.

  int v[3] = { 1 };

(This shouldn't be confused with the case that a variable has
no initializer at all. If the above statement is "int v[3];",
it's contents are undefined.)

We didn't have to zero-out the entire memory for a variable.
We could set zeros only to holes between initialized fields.
This patch does that.

andrewchambers/8cc,jtramm/8cc,jtramm/8cc,8l/8cc,nobody1986/8cc,nobody1986/8cc,vastin/8cc,cpjreynolds/8cc,vastin/8cc,8l/8cc,rui314/8cc,andrewchambers/8cc,nobody1986/8cc,nobody1986/8cc,andrewchambers/8cc,vastin/8cc,rui314/8cc,gergo-/8cc,abc00/8cc,rui314/8cc,cpjreynolds/8cc,abc00/8cc,vastin/8cc,jtramm/8cc,gergo-/8cc,jtramm/8cc,8l/8cc,abc00/8cc,8l/8cc,cpjreynolds/8cc,gergo-/8cc,cpjreynolds/8cc,abc00/8cc,rui314/8cc,andrewchambers/8cc