From: Michael Jeanson Date: Thu, 23 Mar 2023 18:23:55 +0000 (-0400) Subject: fix: warning 'noreturn' function does return on ppc X-Git-Url: https://git.lttng.org/?p=urcu.git;a=commitdiff_plain;h=106ed13754b1b836f4b59405f4e02aea4bf5eef0 fix: warning 'noreturn' function does return on ppc On a ppc64 system with gcc 9.5.0 I get the following error when building with -O0 : /usr/include/urcu/uatomic/generic.h: In function 'void _uatomic_link_error()': /usr/include/urcu/uatomic/generic.h:53:1: warning: 'noreturn' function does return 53 | } | ^ Split the inline function in 2 variants and apply the noreturn attribute only on the builtin_trap one. Change-Id: I5ae8e764c4cc27af0463924a653b9eaa9f698c34 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- diff --git a/include/urcu/uatomic/generic.h b/include/urcu/uatomic/generic.h index c3762b0..e31a19b 100644 --- a/include/urcu/uatomic/generic.h +++ b/include/urcu/uatomic/generic.h @@ -38,19 +38,23 @@ extern "C" { #endif #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR -static inline __attribute__((always_inline, __noreturn__)) +#ifdef ILLEGAL_INSTR +static inline __attribute__((always_inline)) void _uatomic_link_error(void) { -#ifdef ILLEGAL_INSTR /* * generate an illegal instruction. Cannot catch this with * linker tricks when optimizations are disabled. */ __asm__ __volatile__(ILLEGAL_INSTR); +} #else +static inline __attribute__((always_inline, __noreturn__)) +void _uatomic_link_error(void) +{ __builtin_trap(); -#endif } +#endif #else /* #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */ extern void _uatomic_link_error(void);