http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46076
--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-10-19 03:25:37 UTC --- Also renaming main() to main2() so GCC no longer can track the runtime behaviour leads to: 0: 53 push %rbx 1: bb 00 00 00 00 mov $0x0,%ebx 6: ff d3 callq *%rbx 8: bf 00 00 00 00 mov $0x0,%edi d: 0f b6 f0 movzbl %al,%esi 10: 31 c0 xor %eax,%eax 12: e8 00 00 00 00 callq 17 <main2+0x17> 17: ff d3 callq *%rbx 19: 0f b6 f0 movzbl %al,%esi 1c: bf 00 00 00 00 mov $0x0,%edi 21: 31 c0 xor %eax,%eax 23: 83 c6 01 add $0x1,%esi 26: bb 00 00 00 00 mov $0x0,%ebx 2b: e8 00 00 00 00 callq 30 <main2+0x30> 30: ff d3 callq *%rbx 32: bf 00 00 00 00 mov $0x0,%edi 37: 0f b6 f0 movzbl %al,%esi 3a: 31 c0 xor %eax,%eax 3c: e8 00 00 00 00 callq 41 <main2+0x41> 41: ff d3 callq *%rbx 43: 0f b6 f0 movzbl %al,%esi 46: bf 00 00 00 00 mov $0x0,%edi 4b: 31 c0 xor %eax,%eax 4d: 83 c6 01 add $0x1,%esi 50: e8 00 00 00 00 callq 55 <main2+0x55> 55: 31 c0 xor %eax,%eax 57: 5b pop %rbx 58: c3 retq 59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) that is 89 bytes. What is the problem with the proprietary and complex code?