Ahh, I see, the actual fix is not the variable, but the wrong order of
operands in the assembly, I missed that.
But the additional prototypes are still pointless ;-)
Btw, I'm all for enabling extra warnings, but the following ones seem
not very useful or will probably create a lot of noise:
|-Wunused-but-set-variable (we have this in many places)
|||-Wmaybe-uninitialized (gives too many warnings, since initializing
something by passing it to a function cases this warning)
||||-Wmissing-prototypes (in the kernel no functions are declared static
(wrong IMO, but that's how it is), which will lead to many warnings)
||||-Wmissing-declarations (see above)
||||-Wcast-align (explicitly casting to a higher alignment can be useful
and there is no other way to avoid this warning)
||||-Wwrite-strings (I fear that we don't always use the const modifier
properly to allow this)
||
-Wuninitialized is already implicitly defined by -Wall
The following additional warnings seem to be reasonable by a quick glance:
|-Wframe-larger-than=|len / |-Wstack-usage=|len (at least for kernel
mode code)||
|-Wbad-function-cast|
|-Wsign-compare (enabled on MSVC by default)
|
|-Wsign-conversion|||
|-Wlogical-op|
|-Waggregate-return|
|-Winvalid-pch|
||
||Timo
Am 11.08.2013 13:26, schrieb Amine Khaldi:
The signed/unsigned mismatch (regardless of whether it
makes a
difference or not) is what led to inspecting __ll_rshift() which, in
turn, resulted in finding a far more serious issue (incorrect
implementation) corrected in both __ll_rshift() and __ull_rshift().
This is a result of a series of warnings suggested by Aleksandar
Andrejevic. -Werror -Wall -Wextra -Wshadow -Wpointer-arith
-Wcast-align -Wwrite-strings -Wmissing-prototypes
-Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline
-Wno-long-long -Wuninitialized -Wconversion -Wstrict-prototypes