Temporary fix for bug 4254 - a _lot_ of strict aliasing warnings
Ozkan Sezer A horde of strict aliasing violation warnings are emitted from joystick layer, and also from a few other places. This happens with gcc-4.4.7 on Linux CentOS 6.10. Some other sysjoystick would possibly have the same warnings. Attached my full log here. Example entry: src/joystick/SDL_joystick.c: In function 'SDL_GetJoystickGUIDInfo': src/joystick/SDL_joystick.c:1094: warning: dereferencing pointer '({anonymous})' does break strict-aliasing rules
parent
31765242d6
commit
1b73d578f3
|
@ -418,6 +418,11 @@ if(USE_GCC OR USE_CLANG)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
check_c_compiler_flag(-fno-strict-aliasing HAVE_GCC_NO_STRICT_ALIASING)
|
||||||
|
if(HAVE_GCC_NO_STRICT_ALIASING)
|
||||||
|
list(APPEND EXTRA_CFLAGS "-fno-strict-aliasing")
|
||||||
|
endif()
|
||||||
|
|
||||||
check_c_compiler_flag(-Wdeclaration-after-statement HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
|
check_c_compiler_flag(-Wdeclaration-after-statement HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
|
||||||
if(HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
|
if(HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
|
||||||
check_c_compiler_flag(-Werror=declaration-after-statement HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
|
check_c_compiler_flag(-Werror=declaration-after-statement HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
|
||||||
|
|
|
@ -19396,6 +19396,43 @@ $as_echo "$have_gcc_fvisibility" >&6; }
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CheckNoStrictAliasing()
|
||||||
|
{
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -fno-strict-aliasing option" >&5
|
||||||
|
$as_echo_n "checking for GCC -fno-strict-aliasing option... " >&6; }
|
||||||
|
have_gcc_no_strict_aliasing=no
|
||||||
|
|
||||||
|
save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$save_CFLAGS -fno-strict-aliasing"
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_compile "$LINENO"; then :
|
||||||
|
|
||||||
|
have_gcc_no_strict_aliasing=yes
|
||||||
|
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc_no_strict_aliasing" >&5
|
||||||
|
$as_echo "$have_gcc_no_strict_aliasing" >&6; }
|
||||||
|
CFLAGS="$save_CFLAGS"
|
||||||
|
|
||||||
|
if test x$have_gcc_no_strict_aliasing = xyes; then
|
||||||
|
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
CheckStackBoundary()
|
CheckStackBoundary()
|
||||||
{
|
{
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -mpreferred-stack-boundary option" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -mpreferred-stack-boundary option" >&5
|
||||||
|
@ -24334,6 +24371,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
CheckWarnAll
|
CheckWarnAll
|
||||||
|
CheckNoStrictAliasing
|
||||||
|
|
||||||
CheckEventSignals
|
CheckEventSignals
|
||||||
|
|
||||||
|
@ -24402,8 +24440,8 @@ case "$host" in
|
||||||
CheckOpenGLESX11
|
CheckOpenGLESX11
|
||||||
CheckVulkan
|
CheckVulkan
|
||||||
CheckWayland
|
CheckWayland
|
||||||
CheckLibUDev
|
|
||||||
CheckInputEvents
|
CheckInputEvents
|
||||||
|
CheckLibUDev
|
||||||
CheckDBus
|
CheckDBus
|
||||||
CheckIME
|
CheckIME
|
||||||
CheckIBus
|
CheckIBus
|
||||||
|
|
24
configure.ac
24
configure.ac
|
@ -1329,6 +1329,29 @@ CheckVisibilityHidden()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dnl See if GCC's -fno-strict-aliasingis supported.
|
||||||
|
dnl Reference: https://bugzilla.libsdl.org/show_bug.cgi?id=4254
|
||||||
|
CheckNoStrictAliasing()
|
||||||
|
{
|
||||||
|
AC_MSG_CHECKING(for GCC -fno-strict-aliasing option)
|
||||||
|
have_gcc_no_strict_aliasing=no
|
||||||
|
|
||||||
|
save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$save_CFLAGS -fno-strict-aliasing"
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
int x = 0;
|
||||||
|
],[
|
||||||
|
],[
|
||||||
|
have_gcc_no_strict_aliasing=yes
|
||||||
|
])
|
||||||
|
AC_MSG_RESULT($have_gcc_no_strict_aliasing)
|
||||||
|
CFLAGS="$save_CFLAGS"
|
||||||
|
|
||||||
|
if test x$have_gcc_no_strict_aliasing = xyes; then
|
||||||
|
EXTRA_CFLAGS="$EXTRA_CFLAGS -fno-strict-aliasing"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
dnl See if GCC's -mpreferred-stack-boundary is supported.
|
dnl See if GCC's -mpreferred-stack-boundary is supported.
|
||||||
dnl Reference: http://bugzilla.libsdl.org/show_bug.cgi?id=1296
|
dnl Reference: http://bugzilla.libsdl.org/show_bug.cgi?id=1296
|
||||||
CheckStackBoundary()
|
CheckStackBoundary()
|
||||||
|
@ -3263,6 +3286,7 @@ AS_HELP_STRING([--enable-foregrounding-signal], [number to use for magic foregro
|
||||||
|
|
||||||
dnl Do this on all platforms, before everything else (other things might want to override it).
|
dnl Do this on all platforms, before everything else (other things might want to override it).
|
||||||
CheckWarnAll
|
CheckWarnAll
|
||||||
|
CheckNoStrictAliasing
|
||||||
|
|
||||||
dnl Do this for every platform, but for some it doesn't mean anything, but better to catch it here anyhow.
|
dnl Do this for every platform, but for some it doesn't mean anything, but better to catch it here anyhow.
|
||||||
CheckEventSignals
|
CheckEventSignals
|
||||||
|
|
Loading…
Reference in New Issue