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.

Reply via email to