]> git.ipfire.org Git - thirdparty/haproxy.git/commit
BUILD: compiler: implement unreachable for older compilers too
authorWilly Tarreau <w@1wt.eu>
Wed, 8 Jun 2022 10:14:23 +0000 (12:14 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 8 Jun 2022 10:17:22 +0000 (12:17 +0200)
commit7d318ed8cc28f068c29309504f8dc6b2681addd8
treecca3f27750620cd4d37d205daa95d130af263d93
parent69e3f05b1502317f83768c9cf25892bfb4f35dcb
BUILD: compiler: implement unreachable for older compilers too

Benoit Dolez reported that gcc-4.4 emits several "may be used
uninitialized" warnings around places where there are BUG_ON()
or ABORT_NOW(). The reason is that __builtin_unreachable() was
introduced in gcc-4.5 thus older ones do not know that the code
after such statements is not reachable.

This patch solves the problem by deplacing the statement with
an infinite loop on older versions. The compiler knows that the
code following it cannot be reached, and this is quite cheap
(2 to 4 bytes depending on architectures). It even reduces the
code size a little bit as the compiler doesn't have to optimize
for branches that do not exist.

This may be backported to older versions.
include/haproxy/compiler.h