mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
libgfortran: Use __builtin_unreachable() not -Wno-stringop-overflow to silence warning
The only caller of write_z is formatted_transfer_scalar_write that passes kind to 'len'; in turn, write_z is the only caller of xtoa_big, passing on its 'len'. The kind is passed as is, except for GFC_REAL_17 for which len = 16 is used. libgfortran/ * io/write.c (xtoa_big): Change a 'GCC diagnostic ignored "-Wstringop-overflow"' to an assumption (via __builtin_unreachable).t
This commit is contained in:
parent
73cd319b72
commit
4f41d497c9
@ -1179,6 +1179,15 @@ xtoa_big (const char *s, char *buffer, int len, GFC_UINTEGER_LARGEST *n)
|
||||
uint8_t h, l;
|
||||
int i;
|
||||
|
||||
/* write_z, which calls xtoa_big, is called from transfer.c,
|
||||
formatted_transfer_scalar_write. There it is passed the kind as
|
||||
'len' argument, which means a maximum of 16. The buffer is large
|
||||
enough, but the compiler does not know that, so shut up the
|
||||
warning here. */
|
||||
|
||||
if (len > 16)
|
||||
__builtin_unreachable ();
|
||||
|
||||
q = buffer;
|
||||
|
||||
if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||||
@ -1212,15 +1221,7 @@ xtoa_big (const char *s, char *buffer, int len, GFC_UINTEGER_LARGEST *n)
|
||||
}
|
||||
}
|
||||
|
||||
/* write_z, which calls xtoa_big, is called from transfer.c,
|
||||
formatted_transfer_scalar_write. There it is passed the kind as
|
||||
argument, which means a maximum of 16. The buffer is large
|
||||
enough, but the compiler does not know that, so shut up the
|
||||
warning here. */
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wstringop-overflow"
|
||||
*q = '\0';
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
if (*n == 0)
|
||||
return "0";
|
||||
|
Loading…
Reference in New Issue
Block a user