http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40436
--- Comment #39 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-11-13 18:42:01 UTC --- I ran comparsion on x86-64 comparing mainline with GCC 4.3. We get bigger sum of object sizes, but results are not too bad overall. Main code size grains are: 222 jikespg-1.3src/remspb 247 OpenTCP-1.0.4smtp/smtp_clientb 248 linux-2.4.23-pre3-testplatformarch/testplatform/kernel/setupb 256 linux-2.4.23-pre3-testplatformlib/rbtreeb 261 teem-1.6.0-srcsrc/bane/hvolb 262 jikespg-1.3src/produceb 265 mpeg2dec-0.3.1libvo/yuv2rgbb 267 zlib-1.1.4treesb 280 linux-2.4.23-pre3-testplatformnet/ipv4/tcp_ipv4b 287 jikespg-1.3src/lpgparseb 290 teem-1.6.0-srcsrc/nrrd/reorderb 295 linux-2.4.23-pre3-testplatformarch/testplatform/mm/faultb 295 linux-2.4.23-pre3-testplatformlib/zlib_deflate/deftreeb 306 jpeg-6bjdcoefctb 311 linux-2.4.23-pre3-testplatformkernel/exitb 315 teem-1.6.0-srcsrc/nrrd/test/axb 320 linux-2.4.23-pre3-testplatformfs/nfs/procb 320 linux-2.4.23-pre3-testplatformnet/ipv4/tcpb 324 cg_compiler_opensrccompileb 337 flex-2.5.31miscb 368 teem-1.6.0-srcsrc/nrrd/ccb 374 teem-1.6.0-srcsrc/air/enumb 376 linux-2.4.23-pre3-testplatformfs/locksb 377 flex-2.5.31parseb 388 teem-1.6.0-srcsrc/gage/updateb 400 teem-1.6.0-srcsrc/gage/sclfilterb 414 OpenTCP-1.0.4pop3/pop3_clientb 417 teem-1.6.0-srcsrc/hest/parseHestb 421 teem-1.6.0-srcsrc/nrrd/filtb 432 libmspackmspack/lzxdb 433 cg_compiler_opensrctokensb 442 compilerscannerb 446 linux-2.4.23-pre3-testplatformkernel/schedb 480 linux-2.4.23-pre3-testplatformkernel/signalb 510 teem-1.6.0-srcsrc/gage/miscGageb 530 linux-2.4.23-pre3-testplatformfs/nfsd/statsb 532 teem-1.6.0-srcsrc/nrrd/supersetb 534 jikespg-1.3src/spacetabb 578 ttt-0.10.1.preprocsrc/connect4b 580 teem-1.6.0-srcsrc/echo/boundsb 601 cg_compiler_opensrcconstfoldb 699 jikespg-1.3src/globalsb 758 bzip2-1.0.2blocksortb 790 jpeg-6btransuppb 810 teem-1.6.0-srcsrc/nrrd/accessorsb 823 flex-2.5.31scanb 950 linux-2.4.23-pre3-testplatformnet/ipv4/routeb 1069 ttt-0.10.1.preprocsrc/tttb 1072 linux-2.4.23-pre3-testplatformkernel/sysb 1172 libmspackmspack/qtmdb 1453 linux-2.4.23-pre3-testplatformnet/ipv4/tcp_inputb 1643 bzip2-1.0.2compressb 2009 teem-1.6.0-srcsrc/nrrd/convertNrrdb 16144 linux-2.4.23-pre3-testplatformarch/testplatform/kernel/init_taskb init_taskb is bogus: union task_union init_task_union __attribute__((aligned(16384))) = { { state: 0, flags: 0, sigpending: 0, addr_limit: ((mm_segment_t) { (0) }), exec_domain: &default_exec_domain, lock_depth: -1, counter: (10*100/100), nice: (0), policy: 0, mm: ((void *)0), active_mm: &init_mm, cpus_runnable: ~0UL, cpus_allowed: ~0UL, run_list: { &(init_task_union.task.run_list), &(init_task_union.task.run_list) }, next_task: &init_task_union.task, prev_task: &init_task_union.task, p_opptr: &init_task_union.task, p_pptr: &init_task_union.task, thread_group: { &(init_task_union.task.thread_group), &(init_task_union.task.thread_group) }, wait_chldexit: { lock: (spinlock_t) { }, task_list: { &(init_task_union.task.wait_chldexit).task_list, &(init_task_union.task.wait_chldexit).task_list }, }, real_timer: { function: it_real_fn }, cap_effective: (~0 & ~(1 << (8))), cap_inheritable: (0), cap_permitted: (~0), keep_capabilities: 0, rlim: { { (~0UL), (~0UL) }, { (~0UL), (~0UL) }, { (~0UL), (~0UL) }, { (8*1024*1024), (~0UL) }, { 0, (~0UL) }, { (~0UL), (~0UL) }, { 0, 0 }, { 1024, 1024 }, { (~0UL), (~0UL) }, { (~0UL), (~0UL) }, { (~0UL), (~0UL) }, }, user: (&root_user), comm: "swapper", thread: {{0,{{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}, {0},{0},{0},{0},{0},{0}}}, 0, 0, sizeof((init_task_union.stack)) + (addr_t) &(init_task_union.stack), ((unsigned long)((addr_t) &swapper_pg_dir[0]) + (0x4|0x1|0x40|0x100)), 0,0,0, (per_struct) {{{{0,}}},0,0,0,0,{{0,}}}, 0, 0, 0 }, fs: &init_fs, files: &init_files, sigmask_lock: (spinlock_t) { }, sig: &init_signals, pending: { ((void *)0), &init_task_union.task.pending.head, {{0}}}, blocked: {{0}}, alloc_lock: (spinlock_t) { }, journal_info: ((void *)0), } }; tsk... Looks like GCC 4.3 ignored overly large alignments of variables.