lib/test_printf.c: fix clang -Wformat warnings
[linux-2.6-block.git] / lib / test_printf.c
index 3b017566bbd217adee7fcca92a61814e85014de3..4bd15a593fbd938c142f6ef9cac80a5f4c3033e0 100644 (file)
 #define PAD_SIZE 16
 #define FILL_CHAR '$'
 
+#define NOWARN(option, comment, block) \
+       __diag_push(); \
+       __diag_ignore_all(#option, comment); \
+       block \
+       __diag_pop();
+
 KSTM_MODULE_GLOBALS();
 
 static char *test_buffer __initdata;
@@ -159,9 +165,11 @@ test_number(void)
        test("0x1234abcd  ", "%#-12x", 0x1234abcd);
        test("  0x1234abcd", "%#12x", 0x1234abcd);
        test("0|001| 12|+123| 1234|-123|-1234", "%d|%03d|%3d|%+d|% d|%+d|% d", 0, 1, 12, 123, 1234, -123, -1234);
-       test("0|1|1|128|255", "%hhu|%hhu|%hhu|%hhu|%hhu", 0, 1, 257, 128, -1);
-       test("0|1|1|-128|-1", "%hhd|%hhd|%hhd|%hhd|%hhd", 0, 1, 257, 128, -1);
-       test("2015122420151225", "%ho%ho%#ho", 1037, 5282, -11627);
+       NOWARN(-Wformat, "Intentionally test narrowing conversion specifiers.", {
+               test("0|1|1|128|255", "%hhu|%hhu|%hhu|%hhu|%hhu", 0, 1, 257, 128, -1);
+               test("0|1|1|-128|-1", "%hhd|%hhd|%hhd|%hhd|%hhd", 0, 1, 257, 128, -1);
+               test("2015122420151225", "%ho%ho%#ho", 1037, 5282, -11627);
+       })
        /*
         * POSIX/C99: »The result of converting zero with an explicit
         * precision of zero shall be no characters.« Hence the output