https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100464
Bug ID: 100464 Summary: emitted binary code changes when -g is enabled at -O3 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: cnsun at uwaterloo dot ca Target Milestone: --- For the following program, when I turn on and off the flag '-g', the emitted binary code by gcc-trunk is difference. $ cat small.c int *a; static int b, c, d, e, g, h; int f; void i() { int *j[] = {&e, &b, &b, &d, &b, &b, &g, &e, &g, &b, &b, &b, &b, &g, &e, &e, &b, &b, &d, &b, &b, &e, &e, &g, &b, &b, &b, &b, &g, &e, &g, &c, &e}; int **k = &j[5]; for (; f;) b |= *a; *k = &h; } int main() {} $ $ gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/scratch/software/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /tmp/tmp.PQ1fNP1RKJ-gcc-builder/gcc/configure --enable-languages=c,c++,lto --enable-multiarch --prefix=/scratch/software/gcc-trunk --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20210506 (experimental) [master revision :60f7b28fb:e1fcf14f33e4f371aae8ae497ca58a760d53ca6d] (GCC) $ $ gcc-trunk small.c -O3 -w ; objdump --disassemble a.out > "no-g.txt" $ gcc-trunk small.c -O3 -w -g ; objdump --disassemble a.out > "g.txt" $ diff no-g.txt g.txt 35,36c35,36 < 401043: 49 c7 c0 b0 11 40 00 mov $0x4011b0,%r8 < 40104a: 48 c7 c1 40 11 40 00 mov $0x401140,%rcx --- > 401043: 49 c7 c0 d0 11 40 00 mov $0x4011d0,%r8 > 40104a: 48 c7 c1 60 11 40 00 mov $0x401160,%rcx 108,156c108,162 < 401128: 74 06 je 401130 <i+0x10> < 40112a: eb fe jmp 40112a <i+0xa> < 40112c: 0f 1f 40 00 nopl 0x0(%rax) < 401130: c3 retq < 401131: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) < 401138: 00 00 00 < 40113b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) < < 0000000000401140 <__libc_csu_init>: < 401140: f3 0f 1e fa endbr64 < 401144: 41 57 push %r15 < 401146: 4c 8d 3d f3 2c 00 00 lea 0x2cf3(%rip),%r15 # 403e40 <__frame_dummy_init_array_entry> < 40114d: 41 56 push %r14 < 40114f: 49 89 d6 mov %rdx,%r14 < 401152: 41 55 push %r13 < 401154: 49 89 f5 mov %rsi,%r13 < 401157: 41 54 push %r12 < 401159: 41 89 fc mov %edi,%r12d < 40115c: 55 push %rbp < 40115d: 48 8d 2d e4 2c 00 00 lea 0x2ce4(%rip),%rbp # 403e48 <__do_global_dtors_aux_fini_array_entry> < 401164: 53 push %rbx < 401165: 4c 29 fd sub %r15,%rbp < 401168: 48 83 ec 08 sub $0x8,%rsp < 40116c: e8 8f fe ff ff callq 401000 <_init> < 401171: 48 c1 fd 03 sar $0x3,%rbp < 401175: 74 1f je 401196 <__libc_csu_init+0x56> < 401177: 31 db xor %ebx,%ebx < 401179: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) < 401180: 4c 89 f2 mov %r14,%rdx < 401183: 4c 89 ee mov %r13,%rsi < 401186: 44 89 e7 mov %r12d,%edi < 401189: 41 ff 14 df callq *(%r15,%rbx,8) < 40118d: 48 83 c3 01 add $0x1,%rbx < 401191: 48 39 dd cmp %rbx,%rbp < 401194: 75 ea jne 401180 <__libc_csu_init+0x40> < 401196: 48 83 c4 08 add $0x8,%rsp < 40119a: 5b pop %rbx < 40119b: 5d pop %rbp < 40119c: 41 5c pop %r12 < 40119e: 41 5d pop %r13 < 4011a0: 41 5e pop %r14 < 4011a2: 41 5f pop %r15 < 4011a4: c3 retq < 4011a5: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1) < 4011ac: 00 00 00 00 < < 00000000004011b0 <__libc_csu_fini>: < 4011b0: f3 0f 1e fa endbr64 < 4011b4: c3 retq --- > 401128: 74 26 je 401150 <i+0x30> > 40112a: 48 8b 15 07 2f 00 00 mov 0x2f07(%rip),%rdx # > 404038 <a> > 401131: 8b 05 09 2f 00 00 mov 0x2f09(%rip),%eax # > 404040 <b> > 401137: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) > 40113e: 00 00 > 401140: 0b 02 or (%rdx),%eax > 401142: 89 05 f8 2e 00 00 mov %eax,0x2ef8(%rip) # > 404040 <b> > 401148: eb f6 jmp 401140 <i+0x20> > 40114a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) > 401150: c3 retq > 401151: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) > 401158: 00 00 00 > 40115b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) > > 0000000000401160 <__libc_csu_init>: > 401160: f3 0f 1e fa endbr64 > 401164: 41 57 push %r15 > 401166: 4c 8d 3d d3 2c 00 00 lea 0x2cd3(%rip),%r15 # > 403e40 <__frame_dummy_init_array_entry> > 40116d: 41 56 push %r14 > 40116f: 49 89 d6 mov %rdx,%r14 > 401172: 41 55 push %r13 > 401174: 49 89 f5 mov %rsi,%r13 > 401177: 41 54 push %r12 > 401179: 41 89 fc mov %edi,%r12d > 40117c: 55 push %rbp > 40117d: 48 8d 2d c4 2c 00 00 lea 0x2cc4(%rip),%rbp # > 403e48 <__do_global_dtors_aux_fini_array_entry> > 401184: 53 push %rbx > 401185: 4c 29 fd sub %r15,%rbp > 401188: 48 83 ec 08 sub $0x8,%rsp > 40118c: e8 6f fe ff ff callq 401000 <_init> > 401191: 48 c1 fd 03 sar $0x3,%rbp > 401195: 74 1f je 4011b6 <__libc_csu_init+0x56> > 401197: 31 db xor %ebx,%ebx > 401199: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) > 4011a0: 4c 89 f2 mov %r14,%rdx > 4011a3: 4c 89 ee mov %r13,%rsi > 4011a6: 44 89 e7 mov %r12d,%edi > 4011a9: 41 ff 14 df callq *(%r15,%rbx,8) > 4011ad: 48 83 c3 01 add $0x1,%rbx > 4011b1: 48 39 dd cmp %rbx,%rbp > 4011b4: 75 ea jne 4011a0 <__libc_csu_init+0x40> > 4011b6: 48 83 c4 08 add $0x8,%rsp > 4011ba: 5b pop %rbx > 4011bb: 5d pop %rbp > 4011bc: 41 5c pop %r12 > 4011be: 41 5d pop %r13 > 4011c0: 41 5e pop %r14 > 4011c2: 41 5f pop %r15 > 4011c4: c3 retq > 4011c5: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1) > 4011cc: 00 00 00 00 > > 00000000004011d0 <__libc_csu_fini>: > 4011d0: f3 0f 1e fa endbr64 > 4011d4: c3 retq 160,164c166,170 < 00000000004011b8 <_fini>: < 4011b8: f3 0f 1e fa endbr64 < 4011bc: 48 83 ec 08 sub $0x8,%rsp < 4011c0: 48 83 c4 08 add $0x8,%rsp < 4011c4: c3 retq --- > 00000000004011d8 <_fini>: > 4011d8: f3 0f 1e fa endbr64 > 4011dc: 48 83 ec 08 sub $0x8,%rsp > 4011e0: 48 83 c4 08 add $0x8,%rsp > 4011e4: c3 retq