This testcase generates some kind of initalization of uninitialized part of the structure:
--cut here-- struct ret_struct { int long_buf[10]; }; struct ret_struct strc_test (int i) { struct ret_struct ret; ret.long_buf[0] = i; ret.long_buf[1] = 0x2; ret.long_buf[2] = 0x3; ret.long_buf[3] = 0x4; ret.long_buf[4] = 0x5; ret.long_buf[5] = 0x6; return ret; } --cut here-- gcc -O2 -fverbose-asm -fomit-frame-pointer: --cut here-- strc_test: movl 4(%esp), %eax # D.1563, D.1563 movl 8(%esp), %edx # i, i movl %eax, 36(%eax) # ret$long_buf$9, <result>.long_buf << !! movl %eax, 32(%eax) # ret$long_buf$8, <result>.long_buf << !! movl %eax, 28(%eax) # ret$long_buf$7, <result>.long_buf << !! movl %eax, 24(%eax) # ret$long_buf$6, <result>.long_buf << !! movl $6, 20(%eax) #, <result>.long_buf movl $5, 16(%eax) #, <result>.long_buf movl $4, 12(%eax) #, <result>.long_buf movl $3, 8(%eax) #, <result>.long_buf movl $2, 4(%eax) #, <result>.long_buf movl %edx, (%eax) # i, <result>.long_buf ret $4 # --cut here-- These extra variables can be seen in the _.optimized tree dump: --cut here-- ;; Function strc_test (strc_test) Analyzing Edge Insertions. strc_test (i) { int ret$long_buf$9; int ret$long_buf$8; int ret$long_buf$7; int ret$long_buf$6; <bb 2>: <retval>.long_buf[9] = ret$long_buf$9; <retval>.long_buf[8] = ret$long_buf$8; <retval>.long_buf[7] = ret$long_buf$7; <retval>.long_buf[6] = ret$long_buf$6; <retval>.long_buf[5] = 6; <retval>.long_buf[4] = 5; <retval>.long_buf[3] = 4; <retval>.long_buf[2] = 3; <retval>.long_buf[1] = 2; <retval>.long_buf[0] = i; return <retval>; } --cut here-- Using -Wall, gcc correctly warns about uninitialized part (why extra 'u' in index?): t.c:16: warning: 'ret.long_buf[9u]' is used uninitialized in this function t.c:16: warning: 'ret.long_buf[8u]' is used uninitialized in this function t.c:16: warning: 'ret.long_buf[7u]' is used uninitialized in this function t.c:16: warning: 'ret.long_buf[6u]' is used uninitialized in this function IMO emitting some sort of initialization in this case is not needed. -- Summary: Strange initialization of uninitialized structure part Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: uros at kss-loka dot si GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27638