Zebediah Figura : configure: Use -Winit-self if possible.

Alexandre Julliard julliard at winehq.org
Thu Mar 11 15:59:36 CST 2021


Module: wine
Branch: master
Commit: 131d2d2ef3ab180eeb9d6c7e7b9c8bd8697b62d5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=131d2d2ef3ab180eeb9d6c7e7b9c8bd8697b62d5

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Thu Mar 11 10:08:06 2021 -0600

configure: Use -Winit-self if possible.

This protects against variable initialization like "int x = x". gcc apparently
treats this as an intentional way to suppress uninitialized or unused variable
warnings, but in my case it has caused at least one confusing bug.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 configure    | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 configure.ac |  2 ++
 2 files changed, 58 insertions(+)

diff --git a/configure b/configure
index 475fcfdf749..9026b1f53ad 100755
--- a/configure
+++ b/configure
@@ -9981,6 +9981,37 @@ fi
 $as_echo "$ac_cv_crosscflags__Wignored_qualifiers" >&6; }
 if test "x$ac_cv_crosscflags__Wignored_qualifiers" = xyes; then :
   EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Wignored-qualifiers"
+fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -Winit-self" >&5
+$as_echo_n "checking whether the cross-compiler supports -Winit-self... " >&6; }
+if ${ac_cv_crosscflags__Winit_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -Winit-self"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_crosscflags__Winit_self=yes
+else
+  ac_cv_crosscflags__Winit_self=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__Winit_self" >&5
+$as_echo "$ac_cv_crosscflags__Winit_self" >&6; }
+if test "x$ac_cv_crosscflags__Winit_self" = xyes; then :
+  EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Winit-self"
 fi
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -Wpacked-not-aligned" >&5
 $as_echo_n "checking whether the cross-compiler supports -Wpacked-not-aligned... " >&6; }
@@ -17193,6 +17224,31 @@ fi
 $as_echo "$ac_cv_cflags__Wignored_qualifiers" >&6; }
 if test "x$ac_cv_cflags__Wignored_qualifiers" = xyes; then :
   EXTRACFLAGS="$EXTRACFLAGS -Wignored-qualifiers"
+fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Winit-self" >&5
+$as_echo_n "checking whether the compiler supports -Winit-self... " >&6; }
+if ${ac_cv_cflags__Winit_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+CFLAGS="$CFLAGS -Winit-self"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(int argc, char **argv) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_cflags__Winit_self=yes
+else
+  ac_cv_cflags__Winit_self=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__Winit_self" >&5
+$as_echo "$ac_cv_cflags__Winit_self" >&6; }
+if test "x$ac_cv_cflags__Winit_self" = xyes; then :
+  EXTRACFLAGS="$EXTRACFLAGS -Winit-self"
 fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wpacked-not-aligned" >&5
 $as_echo_n "checking whether the compiler supports -Wpacked-not-aligned... " >&6; }
diff --git a/configure.ac b/configure.ac
index 5b7f09de924..1ca832102d8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1044,6 +1044,7 @@ then
         WINE_TRY_CROSSCFLAGS([-Wdeclaration-after-statement])
         WINE_TRY_CROSSCFLAGS([-Wempty-body])
         WINE_TRY_CROSSCFLAGS([-Wignored-qualifiers])
+        WINE_TRY_CROSSCFLAGS([-Winit-self])
         WINE_TRY_CROSSCFLAGS([-Wpacked-not-aligned],[EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Wno-packed-not-aligned"])
         WINE_TRY_CROSSCFLAGS([-Wpragma-pack],[EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -Wno-pragma-pack"])
         WINE_TRY_CROSSCFLAGS([-Wshift-overflow=2])
@@ -2024,6 +2025,7 @@ then
   WINE_TRY_CFLAGS([-Wdeclaration-after-statement])
   WINE_TRY_CFLAGS([-Wempty-body])
   WINE_TRY_CFLAGS([-Wignored-qualifiers])
+  WINE_TRY_CFLAGS([-Winit-self])
   WINE_TRY_CFLAGS([-Wpacked-not-aligned],[EXTRACFLAGS="$EXTRACFLAGS -Wno-packed-not-aligned"])
   WINE_TRY_CFLAGS([-Wpragma-pack],[EXTRACFLAGS="$EXTRACFLAGS -Wno-pragma-pack"])
   WINE_TRY_CFLAGS([-Wshift-overflow=2])




More information about the wine-cvs mailing list