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