The .text section for the following program (transformed_program.c) changes after toggling the -g flag. $ cat transformed_program0.c int printf(const char *, ...); long a[8]; long *b; long c[7]; int(d)(int l) { return 0; } int main() { long *e = &c[6], *f = &a[2]; b = e; int g = f != e, h = d(g); *b = 7; i:; int k = h < 8; if (!k) goto j; printf("%d\n", (int)a[h]); h = h + 1; goto i; j:; } $ $ clang-trunk -v clang version 13.0.0 (https://github.com/llvm/llvm-project.git 9cfec72ffeec242783b70e792c50bd163dcf9dbb) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /home/cnsun/usr/bin Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/10 Candidate multilib: .;@m64 Candidate multilib: 32;@m32 Candidate multilib: x32;@mx32 Selected multilib: .;@m64 $ $ clang-trunk -flto -O3 -w transformed_program0.c ; objdump --disassemble a.out > "no-g.txt" $ clang-trunk -g -flto -O3 -w transformed_program0.c ; objdump --disassemble a.out > "g.txt" $ diff no-g.txt g.txt 40,41c40,41 < 401053: 49 c7 c0 20 12 40 00 mov $0x401220,%r8 < 40105a: 48 c7 c1 b0 11 40 00 mov $0x4011b0,%rcx --- > 401053: 49 c7 c0 40 12 40 00 mov $0x401240,%r8 > 40105a: 48 c7 c1 d0 11 40 00 mov $0x4011d0,%rcx 113,144c113,136 < 401131: bf 04 20 40 00 mov $0x402004,%edi < 401136: 31 f6 xor %esi,%esi < 401138: 31 c0 xor %eax,%eax < 40113a: e8 f1 fe ff ff callq 401030 <printf@plt> < 40113f: bf 04 20 40 00 mov $0x402004,%edi < 401144: 31 f6 xor %esi,%esi < 401146: 31 c0 xor %eax,%eax < 401148: e8 e3 fe ff ff callq 401030 <printf@plt> < 40114d: bf 04 20 40 00 mov $0x402004,%edi < 401152: 31 f6 xor %esi,%esi < 401154: 31 c0 xor %eax,%eax < 401156: e8 d5 fe ff ff callq 401030 <printf@plt> < 40115b: bf 04 20 40 00 mov $0x402004,%edi < 401160: 31 f6 xor %esi,%esi < 401162: 31 c0 xor %eax,%eax < 401164: e8 c7 fe ff ff callq 401030 <printf@plt> < 401169: bf 04 20 40 00 mov $0x402004,%edi < 40116e: 31 f6 xor %esi,%esi < 401170: 31 c0 xor %eax,%eax < 401172: e8 b9 fe ff ff callq 401030 <printf@plt> < 401177: bf 04 20 40 00 mov $0x402004,%edi < 40117c: 31 f6 xor %esi,%esi < 40117e: 31 c0 xor %eax,%eax < 401180: e8 ab fe ff ff callq 401030 <printf@plt> < 401185: bf 04 20 40 00 mov $0x402004,%edi < 40118a: 31 f6 xor %esi,%esi < 40118c: 31 c0 xor %eax,%eax < 40118e: e8 9d fe ff ff callq 401030 <printf@plt> < 401193: bf 04 20 40 00 mov $0x402004,%edi < 401198: 31 f6 xor %esi,%esi < 40119a: 31 c0 xor %eax,%eax < 40119c: e8 8f fe ff ff callq 401030 <printf@plt> --- > 401131: 48 c7 05 34 2f 00 00 movq $0x7,0x2f34(%rip) # 404070 <c+0x30> > 401138: 07 00 00 00 > 40113c: 8b 35 3e 2f 00 00 mov 0x2f3e(%rip),%esi # 404080 <a> > 401142: bf 04 20 40 00 mov $0x402004,%edi > 401147: 31 c0 xor %eax,%eax > 401149: e8 e2 fe ff ff callq 401030 <printf@plt> > 40114e: 8b 35 34 2f 00 00 mov 0x2f34(%rip),%esi # 404088 <a+0x8> > 401154: bf 04 20 40 00 mov $0x402004,%edi > 401159: 31 c0 xor %eax,%eax > 40115b: e8 d0 fe ff ff callq 401030 <printf@plt> > 401160: 8b 35 2a 2f 00 00 mov 0x2f2a(%rip),%esi # 404090 <a+0x10> > 401166: bf 04 20 40 00 mov $0x402004,%edi > 40116b: 31 c0 xor %eax,%eax > 40116d: e8 be fe ff ff callq 401030 <printf@plt> > 401172: 8b 35 20 2f 00 00 mov 0x2f20(%rip),%esi # 404098 <a+0x18> > 401178: bf 04 20 40 00 mov $0x402004,%edi > 40117d: 31 c0 xor %eax,%eax > 40117f: e8 ac fe ff ff callq 401030 <printf@plt> > 401184: 8b 35 16 2f 00 00 mov 0x2f16(%rip),%esi # 4040a0 <a+0x20> > 40118a: bf 04 20 40 00 mov $0x402004,%edi > 40118f: 31 c0 xor %eax,%eax > 401191: e8 9a fe ff ff callq 401030 <printf@plt> > 401196: 8b 35 0c 2f 00 00 mov 0x2f0c(%rip),%esi # 4040a8 <a+0x28> > 40119c: bf 04 20 40 00 mov $0x402004,%edi 146,192c138,191 < 4011a3: 59 pop %rcx < 4011a4: c3 retq < 4011a5: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) < 4011ac: 00 00 00 < 4011af: 90 nop < < 00000000004011b0 <__libc_csu_init>: < 4011b0: f3 0f 1e fa endbr64 < 4011b4: 41 57 push %r15 < 4011b6: 4c 8d 3d 53 2c 00 00 lea 0x2c53(%rip),%r15 # 403e10 <__frame_dummy_init_array_entry> < 4011bd: 41 56 push %r14 < 4011bf: 49 89 d6 mov %rdx,%r14 < 4011c2: 41 55 push %r13 < 4011c4: 49 89 f5 mov %rsi,%r13 < 4011c7: 41 54 push %r12 < 4011c9: 41 89 fc mov %edi,%r12d < 4011cc: 55 push %rbp < 4011cd: 48 8d 2d 44 2c 00 00 lea 0x2c44(%rip),%rbp # 403e18 <__do_global_dtors_aux_fini_array_entry> < 4011d4: 53 push %rbx < 4011d5: 4c 29 fd sub %r15,%rbp < 4011d8: 48 83 ec 08 sub $0x8,%rsp < 4011dc: e8 1f fe ff ff callq 401000 <_init> < 4011e1: 48 c1 fd 03 sar $0x3,%rbp < 4011e5: 74 1f je 401206 <__libc_csu_init+0x56> < 4011e7: 31 db xor %ebx,%ebx < 4011e9: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) < 4011f0: 4c 89 f2 mov %r14,%rdx < 4011f3: 4c 89 ee mov %r13,%rsi < 4011f6: 44 89 e7 mov %r12d,%edi < 4011f9: 41 ff 14 df callq *(%r15,%rbx,8) < 4011fd: 48 83 c3 01 add $0x1,%rbx < 401201: 48 39 dd cmp %rbx,%rbp < 401204: 75 ea jne 4011f0 <__libc_csu_init+0x40> < 401206: 48 83 c4 08 add $0x8,%rsp < 40120a: 5b pop %rbx < 40120b: 5d pop %rbp < 40120c: 41 5c pop %r12 < 40120e: 41 5d pop %r13 < 401210: 41 5e pop %r14 < 401212: 41 5f pop %r15 < 401214: c3 retq < 401215: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1) < 40121c: 00 00 00 00 < < 0000000000401220 <__libc_csu_fini>: < 401220: f3 0f 1e fa endbr64 < 401224: c3 retq --- > 4011a3: e8 88 fe ff ff callq 401030 <printf@plt> > 4011a8: 8b 35 02 2f 00 00 mov 0x2f02(%rip),%esi # 4040b0 <a+0x30> > 4011ae: bf 04 20 40 00 mov $0x402004,%edi > 4011b3: 31 c0 xor %eax,%eax > 4011b5: e8 76 fe ff ff callq 401030 <printf@plt> > 4011ba: 8b 35 f8 2e 00 00 mov 0x2ef8(%rip),%esi # 4040b8 <a+0x38> > 4011c0: bf 04 20 40 00 mov $0x402004,%edi > 4011c5: 31 c0 xor %eax,%eax > 4011c7: e8 64 fe ff ff callq 401030 <printf@plt> > 4011cc: 31 c0 xor %eax,%eax > 4011ce: 59 pop %rcx > 4011cf: c3 retq > > 00000000004011d0 <__libc_csu_init>: > 4011d0: f3 0f 1e fa endbr64 > 4011d4: 41 57 push %r15 > 4011d6: 4c 8d 3d 33 2c 00 00 lea 0x2c33(%rip),%r15 # 403e10 <__frame_dummy_init_array_entry> > 4011dd: 41 56 push %r14 > 4011df: 49 89 d6 mov %rdx,%r14 > 4011e2: 41 55 push %r13 > 4011e4: 49 89 f5 mov %rsi,%r13 > 4011e7: 41 54 push %r12 > 4011e9: 41 89 fc mov %edi,%r12d > 4011ec: 55 push %rbp > 4011ed: 48 8d 2d 24 2c 00 00 lea 0x2c24(%rip),%rbp # 403e18 <__do_global_dtors_aux_fini_array_entry> > 4011f4: 53 push %rbx > 4011f5: 4c 29 fd sub %r15,%rbp > 4011f8: 48 83 ec 08 sub $0x8,%rsp > 4011fc: e8 ff fd ff ff callq 401000 <_init> > 401201: 48 c1 fd 03 sar $0x3,%rbp > 401205: 74 1f je 401226 <__libc_csu_init+0x56> > 401207: 31 db xor %ebx,%ebx > 401209: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) > 401210: 4c 89 f2 mov %r14,%rdx > 401213: 4c 89 ee mov %r13,%rsi > 401216: 44 89 e7 mov %r12d,%edi > 401219: 41 ff 14 df callq *(%r15,%rbx,8) > 40121d: 48 83 c3 01 add $0x1,%rbx > 401221: 48 39 dd cmp %rbx,%rbp > 401224: 75 ea jne 401210 <__libc_csu_init+0x40> > 401226: 48 83 c4 08 add $0x8,%rsp > 40122a: 5b pop %rbx > 40122b: 5d pop %rbp > 40122c: 41 5c pop %r12 > 40122e: 41 5d pop %r13 > 401230: 41 5e pop %r14 > 401232: 41 5f pop %r15 > 401234: c3 retq > 401235: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1) > 40123c: 00 00 00 00 > > 0000000000401240 <__libc_csu_fini>: > 401240: f3 0f 1e fa endbr64 > 401244: c3 retq 196,200c195,199 < 0000000000401228 <_fini>: < 401228: f3 0f 1e fa endbr64 < 40122c: 48 83 ec 08 sub $0x8,%rsp < 401230: 48 83 c4 08 add $0x8,%rsp < 401234: c3 retq --- > 0000000000401248 <_fini>: > 401248: f3 0f 1e fa endbr64 > 40124c: 48 83 ec 08 sub $0x8,%rsp > 401250: 48 83 c4 08 add $0x8,%rsp > 401254: c3 retq