From dddbb669279e5ccff8bedcea17df43e2fa86ac69 Mon Sep 17 00:00:00 2001 From: PatR Date: Sat, 15 Dec 2018 19:27:08 -0800 Subject: [PATCH] building lev_comp with USE_OLDARGS The relatively recent change to lev_comp do deal with apparent junk in some places in its generated data has triggered a bunch of "cast to 'vA' (aka 'const char *') from smaller integer type 'int' [-Wint-to-pointer-cast]" from clang when building with USE_OLDARGS. Probably should have added a zillion explicit casts to long and 'L' suffix for 0 rather than trying to handle both int and long. Or maybe just turned off that particular warning, which must be coming from -Wall or -Wextra. This modification has no effect for USE_STDARG or USE_VARARGS configs. --- include/sp_lev.h | 81 ++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/include/sp_lev.h b/include/sp_lev.h index 804fbc632..e38244b34 100644 --- a/include/sp_lev.h +++ b/include/sp_lev.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 sp_lev.h $NHDT-Date: 1543371689 2018/11/28 02:21:29 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.24 $ */ +/* NetHack 3.6 sp_lev.h $NHDT-Date: 1544930819 2018/12/16 03:26:59 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.25 $ */ /* Copyright (c) 1989 by Jean-Christophe Collet */ /* NetHack may be freely redistributed. See license for details. */ @@ -487,11 +487,15 @@ struct lc_breakdef { */ #ifdef SPEC_LEV /* compiling lev_comp rather than nethack */ +/* clang format off */ #ifdef USE_OLDARGS #ifndef VA_TYPE typedef const char *vA; #define VA_TYPE #endif +/* hack to avoid "warning: cast to 'vA' (aka 'const char *') from smaller + integer type 'int' [-Wint-to-pointer-cast]" */ +#define vA_(a) ((vA) (long) a) #undef VA_ARGS /* redefine with the maximum number actually used */ #undef VA_SHIFT /* ditto */ #undef VA_PASS1 @@ -506,51 +510,48 @@ typedef const char *vA; arg11 = arg12, arg12 = arg13, arg13 = arg14, arg14 = 0) /* standard NULL may be either (void *)0 or plain 0, both of which would need to be explicitly cast to (char *) here */ -#define VA_PASS1(a1) \ - (vA) a1, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS2(a1, a2) \ - (vA) a1, (vA) a2, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS3(a1, a2, a3) \ - (vA) a1, (vA) a2, (vA) a3, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS4(a1, a2, a3, a4) \ - (vA) a1, (vA) a2, (vA) a3, (vA) a4, (vA) 0, (vA) 0, (vA) 0, (vA) 0, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS5(a1, a2, a3, a4, a5) \ - (vA) a1, (vA) a2, (vA) a3, (vA) a4, (vA) a5, (vA) 0, (vA) 0, (vA) 0, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS7(a1, a2, a3, a4, a5, a6, a7) \ - (vA) a1, (vA) a2, (vA) a3, (vA) a4, (vA) a5, (vA) a6, (vA) a7, (vA) 0, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS8(a1, a2, a3, a4, a5, a6, a7, a8) \ - (vA) a1, (vA) a2, (vA) a3, (vA) a4, (vA) a5, (vA) a6, (vA) a7, (vA) a8, \ - (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \ - (vA) a1, (vA) a2, (vA) a3, (vA) a4, (vA) a5, (vA) a6, (vA) a7, (vA) a8, \ - (vA) a9, (vA) 0, (vA) 0, (vA) 0, (vA) 0, (vA) 0 -#define VA_PASS14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, \ - a14) \ - (vA) a1, (vA) a2, (vA) a3, (vA) a4, (vA) a5, (vA) a6, (vA) a7, (vA) a8, \ - (vA) a9, (vA) a10, (vA) a11, (vA) a12, (vA) a13, (vA) a14 +#define VA_PASS1(a1) \ + vA_(a1), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS2(a1,a2) \ + vA_(a1), vA_(a2), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS3(a1,a2,a3) \ + vA_(a1), vA_(a2), vA_(a3), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS4(a1,a2,a3,a4) \ + vA_(a1), vA_(a2), vA_(a3), vA_(a4), vA_(0), vA_(0), vA_(0), vA_(0), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS5(a1,a2,a3,a4,a5) \ + vA_(a1), vA_(a2), vA_(a3), vA_(a4), vA_(a5), vA_(0), vA_(0), vA_(0), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS7(a1,a2,a3,a4,a5,a6,a7) \ + vA_(a1), vA_(a2), vA_(a3), vA_(a4), vA_(a5), vA_(a6), vA_(a7), vA_(0), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS8(a1,a2,a3,a4,a5,a6,a7,a8) \ + vA_(a1), vA_(a2), vA_(a3), vA_(a4), vA_(a5), vA_(a6), vA_(a7), vA_(a8), \ + vA_(0), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS9(a1,a2,a3,a4,a5,a6,a7,a8,a9) \ + vA_(a1), vA_(a2), vA_(a3), vA_(a4), vA_(a5), vA_(a6), vA_(a7), vA_(a8), \ + vA_(a9), vA_(0), vA_(0), vA_(0), vA_(0), vA_(0) +#define VA_PASS14(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \ + vA_(a1), vA_(a2), vA_(a3), vA_(a4), vA_(a5), vA_(a6), vA_(a7), vA_(a8), \ + vA_(a9), vA_(a10), vA_(a11), vA_(a12), vA_(a13), vA_(a14) #else /*!USE_OLDARGS*/ /* USE_STDARG and USE_VARARGS don't need to pass dummy arguments or cast real ones */ #define VA_PASS1(a1) a1 -#define VA_PASS2(a1, a2) a1, a2 -#define VA_PASS3(a1, a2, a3) a1, a2, a3 -#define VA_PASS4(a1, a2, a3, a4) a1, a2, a3, a4 -#define VA_PASS5(a1, a2, a3, a4, a5) a1, a2, a3, a4, a5 -#define VA_PASS7(a1, a2, a3, a4, a5, a6, a7) a1, a2, a3, a4, a5, a6, a7 -#define VA_PASS8(a1, a2, a3, a4, a5, a6, a7, a8) \ - a1, a2, a3, a4, a5, a6, a7, a8 -#define VA_PASS9(a1, a2, a3, a4, a5, a6, a7, a8, a9) \ - a1, a2, a3, a4, a5, a6, a7, a8, a9 -#define VA_PASS14(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, \ - a14) \ +#define VA_PASS2(a1,a2) a1, a2 +#define VA_PASS3(a1,a2,a3) a1, a2, a3 +#define VA_PASS4(a1,a2,a3,a4) a1, a2, a3, a4 +#define VA_PASS5(a1,a2,a3,a4,a5) a1, a2, a3, a4, a5 +#define VA_PASS7(a1,a2,a3,a4,a5,a6,a7) a1, a2, a3, a4, a5, a6, a7 +#define VA_PASS8(a1,a2,a3,a4,a5,a6,a7,a8) a1, a2, a3, a4, a5, a6, a7, a8 +#define VA_PASS9(a1,a2,a3,a4,a5,a6,a7,a8,a9) a1, a2, a3, a4, a5, a6, a7, a8, a9 +#define VA_PASS14(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14 #endif /*?USE_OLDARGS*/ +/* clang format on */ /* You were warned to avert your eyes.... */ #endif /*SPEC_LEV*/ -- 2.40.0