libbacktrace: use __has_attribute for fallthrough

Also convert some FALLTHROUGH comments to ATTRIBUTE_FALLTHROUGH.

	* internal.h: Use __has_attribute to check for fallthrough
	attribute.
	* elf.c (elf_zstd_decompress): Use ATTRIBUTE_FALLTHROUGH rather
	than a FALLTHROUGH comment.
This commit is contained in:
Ian Lance Taylor 2024-07-18 11:34:09 -07:00
parent 6962835bca
commit 248e8530dd
2 changed files with 12 additions and 7 deletions

View File

@ -4848,25 +4848,25 @@ elf_zstd_decompress (const unsigned char *pin, size_t sin,
{ {
case 8: case 8:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 7: case 7:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 6: case 6:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 5: case 5:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 4: case 4:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 3: case 3:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 2: case 2:
*pout++ = *plit++; *pout++ = *plit++;
/* FALLTHROUGH */ ATTRIBUTE_FALLTHROUGH;
case 1: case 1:
*pout++ = *plit++; *pout++ = *plit++;
break; break;

View File

@ -56,6 +56,11 @@ POSSIBILITY OF SUCH DAMAGE. */
# endif # endif
#endif #endif
#ifdef __has_attribute
# if __has_attribute(fallthrough)
# define ATTRIBUTE_FALLTHROUGH __attribute__ ((fallthrough))
# endif
#endif
#ifndef ATTRIBUTE_FALLTHROUGH #ifndef ATTRIBUTE_FALLTHROUGH
# if (GCC_VERSION >= 7000) # if (GCC_VERSION >= 7000)
# define ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) # define ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))