https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108147
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- M2Emit_EmitError is: 71 extern "C" void M2Emit_EmitError (unsigned int error, unsigned int note, unsigned int token, DynamicStrings_String message) 72 { 73 if (error) 74 { 75 m2linemap_ErrorAtf (M2LexBuf_TokenToLocation (token), DynamicStrings_string (message)); 76 } 77 else if (note) 78 { 79 /* avoid dangling else. */ 80 m2linemap_NoteAtf (M2LexBuf_TokenToLocation (token), DynamicStrings_string (message)); 81 } 82 else 83 { 84 /* avoid dangling else. */ 85 m2linemap_WarningAtf (M2LexBuf_TokenToLocation (token), DynamicStrings_string (message)); 86 } 87 } Dump of assembler code for function M2Emit_EmitError(unsigned int, unsigned int, unsigned int, DynamicStrings_String): 0x000000001111bab0 <+0>: lis r2,4563 0x000000001111bab4 <+4>: addi r2,r2,29696 0x000000001111bab8 <+8>: mflr r0 0x000000001111babc <+12>: std r31,-8(r1) 0x000000001111bac0 <+16>: std r0,16(r1) 0x000000001111bac4 <+20>: stdu r1,-48(r1) 0x000000001111bac8 <+24>: cmpdi r3,0 0x000000001111bacc <+28>: mr r31,r6 0x000000001111bad0 <+32>: mr r3,r5 0x000000001111bad4 <+36>: bne 0x1111bb60 <M2Emit_EmitError(unsigned int, unsigned int, unsigned int, DynamicStrings_String)+176> 0x000000001111bad8 <+40>: cmpdi r4,0 0x000000001111badc <+44>: bne 0x1111bb20 <M2Emit_EmitError(unsigned int, unsigned int, unsigned int, DynamicStrings_String)+112> 0x000000001111bae0 <+48>: bl 0x11054d48 <M2LexBuf_TokenToLocation(unsigned int)+8> 0x000000001111bae4 <+52>: nop 0x000000001111bae8 <+56>: mr r9,r3 0x000000001111baec <+60>: mr r3,r31 0x000000001111baf0 <+64>: mr r31,r9 0x000000001111baf4 <+68>: bl 0x1111f118 <DynamicStrings_string(DynamicStrings_String)+8> 0x000000001111baf8 <+72>: nop 0x000000001111bafc <+76>: mr r4,r3 0x000000001111bb00 <+80>: mr r3,r31 0x000000001111bb04 <+84>: bl 0x10ffc2e8 <m2linemap_WarningAtf(location_t, char const*, ...)+8> 0x000000001111bb08 <+88>: nop 0x000000001111bb0c <+92>: addi r1,r1,48 0x000000001111bb10 <+96>: ld r0,16(r1) 0x000000001111bb14 <+100>: ld r31,-8(r1) 0x000000001111bb18 <+104>: mtlr r0 0x000000001111bb1c <+108>: blr 0x000000001111bb20 <+112>: bl 0x11054d48 <M2LexBuf_TokenToLocation(unsigned int)+8> 0x000000001111bb24 <+116>: nop 0x000000001111bb28 <+120>: mr r9,r3 0x000000001111bb2c <+124>: mr r3,r31 0x000000001111bb30 <+128>: mr r31,r9 0x000000001111bb34 <+132>: bl 0x1111f118 <DynamicStrings_string(DynamicStrings_String)+8> 0x000000001111bb38 <+136>: nop 0x000000001111bb3c <+140>: mr r4,r3 0x000000001111bb40 <+144>: mr r3,r31 0x000000001111bb44 <+148>: bl 0x10ffc448 <m2linemap_NoteAtf(location_t, char const*, ...)+8> 0x000000001111bb48 <+152>: nop 0x000000001111bb4c <+156>: addi r1,r1,48 0x000000001111bb50 <+160>: ld r0,16(r1) 0x000000001111bb54 <+164>: ld r31,-8(r1) 0x000000001111bb58 <+168>: mtlr r0 0x000000001111bb5c <+172>: blr 0x000000001111bb60 <+176>: bl 0x11054d48 <M2LexBuf_TokenToLocation(unsigned int)+8> 0x000000001111bb64 <+180>: nop 0x000000001111bb68 <+184>: mr r9,r3 0x000000001111bb6c <+188>: mr r3,r31 0x000000001111bb70 <+192>: mr r31,r9 0x000000001111bb74 <+196>: bl 0x1111f118 <DynamicStrings_string(DynamicStrings_String)+8> 0x000000001111bb78 <+200>: nop 0x000000001111bb7c <+204>: mr r4,r3 0x000000001111bb80 <+208>: mr r3,r31 0x000000001111bb84 <+212>: bl 0x10ffc188 <m2linemap_ErrorAtf(location_t, char const*, ...)+8> 0x000000001111bb88 <+216>: nop 0x000000001111bb8c <+220>: addi r1,r1,48 0x000000001111bb90 <+224>: ld r0,16(r1) 0x000000001111bb94 <+228>: ld r31,-8(r1) 0x000000001111bb98 <+232>: mtlr r0 0x000000001111bb9c <+236>: blr 0x000000001111bba0 <+240>: .long 0x0 0x000000001111bba4 <+244>: .long 0x1000900 0x000000001111bba8 <+248>: .long 0x180 while the callee is: 200 void 201 m2linemap_WarningAtf (location_t location, const char *message, ...) 202 { 203 diagnostic_info diagnostic; 204 va_list ap; 205 rich_location richloc (line_table, location); 206 207 va_start (ap, message); 208 diagnostic_set_info (&diagnostic, message, &ap, &richloc, DK_WARNING); 209 diagnostic_report_diagnostic (global_dc, &diagnostic); 210 va_end (ap); 211 } with full disassembly above.