HomeFreeBSD

Fix the following -Werror warning from clang 3.5.0, while building the

Description

Fix the following -Werror warning from clang 3.5.0, while building the
ath kernel module:

sys/dev/ath/ath_hal/ar5212/ar5212_reset.c:2642:7: error: taking the absolute value of unsigned type 'unsigned int' has no effect [-Werror,-Wabsolute-value]

if (abs(lp[0] * EEP_SCALE - target) < EEP_DELTA) {
    ^

sys/dev/ath/ah_osdep.h:74:18: note: expanded from macro 'abs'
#define abs(_a) __builtin_abs(_a)

^

sys/dev/ath/ath_hal/ar5212/ar5212_reset.c:2642:7: note: remove the call to 'builtin_abs' since unsigned values cannot be negative
sys/dev/ath/ah_osdep.h:74:18: note: expanded from macro 'abs'
#define abs(_a)
builtin_abs(_a)

^

1 error generated.

This warning occurs because both lp[0] and target are unsigned, so the
subtraction expression is also unsigned, and calling abs() is a no-op.

However, the intention was to look at the absolute difference between
the two unsigned quantities. Introduce a small static function to
clarify what we're doing, and call that instead.

Reviewed by: adrian
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D1212

Details

Provenance
dimAuthored on
Reviewer
adrian
Differential Revision
D1212: Fix clang 3.5.0 warning in ath's ar5212_reset.c
Parents
rS274921: Finish r274335#2: put RT_LOCK_DESTROY() back.
Branches
Unknown
Tags
Unknown

Event Timeline