1eda14cbcSMatt Macydnl # 2c03c5b1cSMartin Matuskadnl # Enabled -fsanitize=address if supported by $CC. 3eda14cbcSMatt Macydnl # 4eda14cbcSMatt Macydnl # LDFLAGS needs -fsanitize=address at all times so libraries compiled with 5eda14cbcSMatt Macydnl # it will be linked successfully. CFLAGS will vary by binary being built. 6eda14cbcSMatt Macydnl # 7eda14cbcSMatt Macydnl # The ASAN_OPTIONS environment variable can be used to further control 8eda14cbcSMatt Macydnl # the behavior of binaries and libraries build with -fsanitize=address. 9eda14cbcSMatt Macydnl # 10eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_ASAN], [ 11eda14cbcSMatt Macy AC_MSG_CHECKING([whether to build with -fsanitize=address support]) 12eda14cbcSMatt Macy AC_ARG_ENABLE([asan], 13eda14cbcSMatt Macy [AS_HELP_STRING([--enable-asan], 14eda14cbcSMatt Macy [Enable -fsanitize=address support @<:@default=no@:>@])], 15eda14cbcSMatt Macy [], 16eda14cbcSMatt Macy [enable_asan=no]) 17eda14cbcSMatt Macy 18eda14cbcSMatt Macy AM_CONDITIONAL([ASAN_ENABLED], [test x$enable_asan = xyes]) 19eda14cbcSMatt Macy AC_SUBST([ASAN_ENABLED], [$enable_asan]) 20eda14cbcSMatt Macy AC_MSG_RESULT($enable_asan) 21eda14cbcSMatt Macy 22eda14cbcSMatt Macy AS_IF([ test "$enable_asan" = "yes" ], [ 23eda14cbcSMatt Macy AC_MSG_CHECKING([whether $CC supports -fsanitize=address]) 24eda14cbcSMatt Macy saved_cflags="$CFLAGS" 25eda14cbcSMatt Macy CFLAGS="$CFLAGS -Werror -fsanitize=address" 26eda14cbcSMatt Macy AC_LINK_IFELSE([ 27eda14cbcSMatt Macy AC_LANG_SOURCE([[ int main() { return 0; } ]]) 28eda14cbcSMatt Macy ], [ 29eda14cbcSMatt Macy ASAN_CFLAGS="-fsanitize=address" 30eda14cbcSMatt Macy ASAN_LDFLAGS="-fsanitize=address" 31eda14cbcSMatt Macy ASAN_ZFS="_with_asan" 32eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 33eda14cbcSMatt Macy ], [ 34eda14cbcSMatt Macy AC_MSG_ERROR([$CC does not support -fsanitize=address]) 35eda14cbcSMatt Macy ]) 36eda14cbcSMatt Macy CFLAGS="$saved_cflags" 37eda14cbcSMatt Macy ], [ 38eda14cbcSMatt Macy ASAN_CFLAGS="" 39eda14cbcSMatt Macy ASAN_LDFLAGS="" 40eda14cbcSMatt Macy ASAN_ZFS="_without_asan" 41eda14cbcSMatt Macy ]) 42eda14cbcSMatt Macy 43eda14cbcSMatt Macy AC_SUBST([ASAN_CFLAGS]) 44eda14cbcSMatt Macy AC_SUBST([ASAN_LDFLAGS]) 45eda14cbcSMatt Macy AC_SUBST([ASAN_ZFS]) 46eda14cbcSMatt Macy]) 47eda14cbcSMatt Macy 48eda14cbcSMatt Macydnl # 49c03c5b1cSMartin Matuskadnl # Enabled -fsanitize=undefined if supported by cc. 50c03c5b1cSMartin Matuskadnl # 51c03c5b1cSMartin Matuskadnl # LDFLAGS needs -fsanitize=undefined at all times so libraries compiled with 52c03c5b1cSMartin Matuskadnl # it will be linked successfully. CFLAGS will vary by binary being built. 53c03c5b1cSMartin Matuskadnl # 54c03c5b1cSMartin Matuskadnl # The UBSAN_OPTIONS environment variable can be used to further control 55c03c5b1cSMartin Matuskadnl # the behavior of binaries and libraries build with -fsanitize=undefined. 56c03c5b1cSMartin Matuskadnl # 57c03c5b1cSMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_UBSAN], [ 58c03c5b1cSMartin Matuska AC_MSG_CHECKING([whether to build with -fsanitize=undefined support]) 59c03c5b1cSMartin Matuska AC_ARG_ENABLE([ubsan], 60c03c5b1cSMartin Matuska [AS_HELP_STRING([--enable-ubsan], 61c03c5b1cSMartin Matuska [Enable -fsanitize=undefined support @<:@default=no@:>@])], 62c03c5b1cSMartin Matuska [], 63c03c5b1cSMartin Matuska [enable_ubsan=no]) 64c03c5b1cSMartin Matuska 65c03c5b1cSMartin Matuska AM_CONDITIONAL([UBSAN_ENABLED], [test x$enable_ubsan = xyes]) 66c03c5b1cSMartin Matuska AC_SUBST([UBSAN_ENABLED], [$enable_ubsan]) 67c03c5b1cSMartin Matuska AC_MSG_RESULT($enable_ubsan) 68c03c5b1cSMartin Matuska 69c03c5b1cSMartin Matuska AS_IF([ test "$enable_ubsan" = "yes" ], [ 70c03c5b1cSMartin Matuska AC_MSG_CHECKING([whether $CC supports -fsanitize=undefined]) 71c03c5b1cSMartin Matuska saved_cflags="$CFLAGS" 72c03c5b1cSMartin Matuska CFLAGS="$CFLAGS -Werror -fsanitize=undefined" 73c03c5b1cSMartin Matuska AC_LINK_IFELSE([ 74c03c5b1cSMartin Matuska AC_LANG_SOURCE([[ int main() { return 0; } ]]) 75c03c5b1cSMartin Matuska ], [ 76c03c5b1cSMartin Matuska UBSAN_CFLAGS="-fsanitize=undefined" 77c03c5b1cSMartin Matuska UBSAN_LDFLAGS="-fsanitize=undefined" 78c03c5b1cSMartin Matuska UBSAN_ZFS="_with_ubsan" 79c03c5b1cSMartin Matuska AC_MSG_RESULT([yes]) 80c03c5b1cSMartin Matuska ], [ 81c03c5b1cSMartin Matuska AC_MSG_ERROR([$CC does not support -fsanitize=undefined]) 82c03c5b1cSMartin Matuska ]) 83c03c5b1cSMartin Matuska CFLAGS="$saved_cflags" 84c03c5b1cSMartin Matuska ], [ 85c03c5b1cSMartin Matuska UBSAN_CFLAGS="" 86c03c5b1cSMartin Matuska UBSAN_LDFLAGS="" 87c03c5b1cSMartin Matuska UBSAN_ZFS="_without_ubsan" 88c03c5b1cSMartin Matuska ]) 89c03c5b1cSMartin Matuska 90c03c5b1cSMartin Matuska AC_SUBST([UBSAN_CFLAGS]) 91c03c5b1cSMartin Matuska AC_SUBST([UBSAN_LDFLAGS]) 92c03c5b1cSMartin Matuska AC_SUBST([UBSAN_ZFS]) 93c03c5b1cSMartin Matuska]) 94c03c5b1cSMartin Matuska 95c03c5b1cSMartin Matuskadnl # 96c03c5b1cSMartin Matuskadnl # Check if cc supports -Wframe-larger-than=<size> option. 97eda14cbcSMatt Macydnl # 98eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN], [ 99eda14cbcSMatt Macy AC_MSG_CHECKING([whether $CC supports -Wframe-larger-than=<size>]) 100eda14cbcSMatt Macy 101eda14cbcSMatt Macy saved_flags="$CFLAGS" 102eda14cbcSMatt Macy CFLAGS="$CFLAGS -Werror -Wframe-larger-than=4096" 103eda14cbcSMatt Macy 104eda14cbcSMatt Macy AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 105eda14cbcSMatt Macy FRAME_LARGER_THAN="-Wframe-larger-than=4096" 106eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 107eda14cbcSMatt Macy ], [ 108eda14cbcSMatt Macy FRAME_LARGER_THAN="" 109eda14cbcSMatt Macy AC_MSG_RESULT([no]) 110eda14cbcSMatt Macy ]) 111eda14cbcSMatt Macy 112eda14cbcSMatt Macy CFLAGS="$saved_flags" 113eda14cbcSMatt Macy AC_SUBST([FRAME_LARGER_THAN]) 114eda14cbcSMatt Macy]) 115eda14cbcSMatt Macy 116eda14cbcSMatt Macydnl # 117c03c5b1cSMartin Matuskadnl # Check if cc supports -Wno-format-truncation option. 118eda14cbcSMatt Macydnl # 119eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION], [ 120eda14cbcSMatt Macy AC_MSG_CHECKING([whether $CC supports -Wno-format-truncation]) 121eda14cbcSMatt Macy 122eda14cbcSMatt Macy saved_flags="$CFLAGS" 123eda14cbcSMatt Macy CFLAGS="$CFLAGS -Werror -Wno-format-truncation" 124eda14cbcSMatt Macy 125eda14cbcSMatt Macy AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 126eda14cbcSMatt Macy NO_FORMAT_TRUNCATION=-Wno-format-truncation 127eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 128eda14cbcSMatt Macy ], [ 129eda14cbcSMatt Macy NO_FORMAT_TRUNCATION= 130eda14cbcSMatt Macy AC_MSG_RESULT([no]) 131eda14cbcSMatt Macy ]) 132eda14cbcSMatt Macy 133eda14cbcSMatt Macy CFLAGS="$saved_flags" 134eda14cbcSMatt Macy AC_SUBST([NO_FORMAT_TRUNCATION]) 135eda14cbcSMatt Macy]) 136eda14cbcSMatt Macy 137eda14cbcSMatt Macydnl # 138c03c5b1cSMartin Matuskadnl # Check if cc supports -Wno-format-zero-length option. 139eda14cbcSMatt Macydnl # 140eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_ZERO_LENGTH], [ 141eda14cbcSMatt Macy AC_MSG_CHECKING([whether $CC supports -Wno-format-zero-length]) 142eda14cbcSMatt Macy 143eda14cbcSMatt Macy saved_flags="$CFLAGS" 144eda14cbcSMatt Macy CFLAGS="$CFLAGS -Werror -Wno-format-zero-length" 145eda14cbcSMatt Macy 146eda14cbcSMatt Macy AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 147eda14cbcSMatt Macy NO_FORMAT_ZERO_LENGTH=-Wno-format-zero-length 148eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 149eda14cbcSMatt Macy ], [ 150eda14cbcSMatt Macy NO_FORMAT_ZERO_LENGTH= 151eda14cbcSMatt Macy AC_MSG_RESULT([no]) 152eda14cbcSMatt Macy ]) 153eda14cbcSMatt Macy 154eda14cbcSMatt Macy CFLAGS="$saved_flags" 155eda14cbcSMatt Macy AC_SUBST([NO_FORMAT_ZERO_LENGTH]) 156eda14cbcSMatt Macy]) 157eda14cbcSMatt Macy 158eda14cbcSMatt Macydnl # 159c03c5b1cSMartin Matuskadnl # Check if cc supports -Wno-clobbered option. 160eda14cbcSMatt Macydnl # 161c03c5b1cSMartin Matuskadnl # We actually invoke it with the -Wclobbered option 162eda14cbcSMatt Macydnl # and infer the 'no-' version does or doesn't exist based upon 163eda14cbcSMatt Macydnl # the results. This is required because when checking any of 164eda14cbcSMatt Macydnl # no- prefixed options gcc always returns success. 165eda14cbcSMatt Macydnl # 166c03c5b1cSMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_CLOBBERED], [ 167c03c5b1cSMartin Matuska AC_MSG_CHECKING([whether $CC supports -Wno-clobbered]) 168eda14cbcSMatt Macy 169eda14cbcSMatt Macy saved_flags="$CFLAGS" 170c03c5b1cSMartin Matuska CFLAGS="$CFLAGS -Werror -Wclobbered" 171eda14cbcSMatt Macy 172eda14cbcSMatt Macy AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 173c03c5b1cSMartin Matuska NO_CLOBBERED=-Wno-clobbered 174eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 175eda14cbcSMatt Macy ], [ 176c03c5b1cSMartin Matuska NO_CLOBBERED= 177eda14cbcSMatt Macy AC_MSG_RESULT([no]) 178eda14cbcSMatt Macy ]) 179eda14cbcSMatt Macy 180eda14cbcSMatt Macy CFLAGS="$saved_flags" 181c03c5b1cSMartin Matuska AC_SUBST([NO_CLOBBERED]) 182eda14cbcSMatt Macy]) 183eda14cbcSMatt Macy 184eda14cbcSMatt Macydnl # 185c03c5b1cSMartin Matuskadnl # Check if cc supports -Wimplicit-fallthrough option. 18653b70c86SMartin Matuskadnl # 18753b70c86SMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_IMPLICIT_FALLTHROUGH], [ 18853b70c86SMartin Matuska AC_MSG_CHECKING([whether $CC supports -Wimplicit-fallthrough]) 18953b70c86SMartin Matuska 19053b70c86SMartin Matuska saved_flags="$CFLAGS" 19153b70c86SMartin Matuska CFLAGS="$CFLAGS -Werror -Wimplicit-fallthrough" 19253b70c86SMartin Matuska 19353b70c86SMartin Matuska AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 19453b70c86SMartin Matuska IMPLICIT_FALLTHROUGH=-Wimplicit-fallthrough 19553b70c86SMartin Matuska AC_DEFINE([HAVE_IMPLICIT_FALLTHROUGH], 1, 19653b70c86SMartin Matuska [Define if compiler supports -Wimplicit-fallthrough]) 19753b70c86SMartin Matuska AC_MSG_RESULT([yes]) 19853b70c86SMartin Matuska ], [ 19953b70c86SMartin Matuska IMPLICIT_FALLTHROUGH= 20053b70c86SMartin Matuska AC_MSG_RESULT([no]) 20153b70c86SMartin Matuska ]) 20253b70c86SMartin Matuska 20353b70c86SMartin Matuska CFLAGS="$saved_flags" 20453b70c86SMartin Matuska AC_SUBST([IMPLICIT_FALLTHROUGH]) 20553b70c86SMartin Matuska]) 20653b70c86SMartin Matuska 20753b70c86SMartin Matuskadnl # 208a0b956f5SMartin Matuskadnl # Check if cc supports -Winfinite-recursion option. 209a0b956f5SMartin Matuskadnl # 210a0b956f5SMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_INFINITE_RECURSION], [ 211a0b956f5SMartin Matuska AC_MSG_CHECKING([whether $CC supports -Winfinite-recursion]) 212a0b956f5SMartin Matuska 213a0b956f5SMartin Matuska saved_flags="$CFLAGS" 214a0b956f5SMartin Matuska CFLAGS="$CFLAGS -Werror -Winfinite-recursion" 215a0b956f5SMartin Matuska 216a0b956f5SMartin Matuska AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 217a0b956f5SMartin Matuska INFINITE_RECURSION=-Winfinite-recursion 218a0b956f5SMartin Matuska AC_DEFINE([HAVE_INFINITE_RECURSION], 1, 219a0b956f5SMartin Matuska [Define if compiler supports -Winfinite-recursion]) 220a0b956f5SMartin Matuska AC_MSG_RESULT([yes]) 221a0b956f5SMartin Matuska ], [ 222a0b956f5SMartin Matuska INFINITE_RECURSION= 223a0b956f5SMartin Matuska AC_MSG_RESULT([no]) 224a0b956f5SMartin Matuska ]) 225a0b956f5SMartin Matuska 226a0b956f5SMartin Matuska CFLAGS="$saved_flags" 227a0b956f5SMartin Matuska AC_SUBST([INFINITE_RECURSION]) 228a0b956f5SMartin Matuska]) 229a0b956f5SMartin Matuska 230a0b956f5SMartin Matuskadnl # 231*bb2d13b6SMartin Matuskadnl # Check if kernel cc supports -Winfinite-recursion option. 232*bb2d13b6SMartin Matuskadnl # 233*bb2d13b6SMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_KERNEL_CC_INFINITE_RECURSION], [ 234*bb2d13b6SMartin Matuska AC_MSG_CHECKING([whether $KERNEL_CC supports -Winfinite-recursion]) 235*bb2d13b6SMartin Matuska 236*bb2d13b6SMartin Matuska saved_cc="$CC" 237*bb2d13b6SMartin Matuska saved_flags="$CFLAGS" 238*bb2d13b6SMartin Matuska CC="gcc" 239*bb2d13b6SMartin Matuska CFLAGS="$CFLAGS -Werror -Winfinite-recursion" 240*bb2d13b6SMartin Matuska 241*bb2d13b6SMartin Matuska AS_IF([ test -n "$KERNEL_CC" ], [ 242*bb2d13b6SMartin Matuska CC="$KERNEL_CC" 243*bb2d13b6SMartin Matuska ]) 244*bb2d13b6SMartin Matuska AS_IF([ test -n "$KERNEL_LLVM" ], [ 245*bb2d13b6SMartin Matuska CC="clang" 246*bb2d13b6SMartin Matuska ]) 247*bb2d13b6SMartin Matuska 248*bb2d13b6SMartin Matuska AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 249*bb2d13b6SMartin Matuska KERNEL_INFINITE_RECURSION=-Winfinite-recursion 250*bb2d13b6SMartin Matuska AC_DEFINE([HAVE_KERNEL_INFINITE_RECURSION], 1, 251*bb2d13b6SMartin Matuska [Define if compiler supports -Winfinite-recursion]) 252*bb2d13b6SMartin Matuska AC_MSG_RESULT([yes]) 253*bb2d13b6SMartin Matuska ], [ 254*bb2d13b6SMartin Matuska KERNEL_INFINITE_RECURSION= 255*bb2d13b6SMartin Matuska AC_MSG_RESULT([no]) 256*bb2d13b6SMartin Matuska ]) 257*bb2d13b6SMartin Matuska 258*bb2d13b6SMartin Matuska CC="$saved_cc" 259*bb2d13b6SMartin Matuska CFLAGS="$saved_flags" 260*bb2d13b6SMartin Matuska AC_SUBST([KERNEL_INFINITE_RECURSION]) 261*bb2d13b6SMartin Matuska]) 262*bb2d13b6SMartin Matuska 263*bb2d13b6SMartin Matuskadnl # 264*bb2d13b6SMartin Matuskadnl # Check if cc supports -Wformat-overflow option. 265*bb2d13b6SMartin Matuskadnl # 266*bb2d13b6SMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_FORMAT_OVERFLOW], [ 267*bb2d13b6SMartin Matuska AC_MSG_CHECKING([whether $CC supports -Wformat-overflow]) 268*bb2d13b6SMartin Matuska 269*bb2d13b6SMartin Matuska saved_flags="$CFLAGS" 270*bb2d13b6SMartin Matuska CFLAGS="$CFLAGS -Werror -Wformat-overflow" 271*bb2d13b6SMartin Matuska 272*bb2d13b6SMartin Matuska AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 273*bb2d13b6SMartin Matuska FORMAT_OVERFLOW=-Wformat-overflow 274*bb2d13b6SMartin Matuska AC_DEFINE([HAVE_FORMAT_OVERFLOW], 1, 275*bb2d13b6SMartin Matuska [Define if compiler supports -Wformat-overflow]) 276*bb2d13b6SMartin Matuska AC_MSG_RESULT([yes]) 277*bb2d13b6SMartin Matuska ], [ 278*bb2d13b6SMartin Matuska FORMAT_OVERFLOW= 279*bb2d13b6SMartin Matuska AC_MSG_RESULT([no]) 280*bb2d13b6SMartin Matuska ]) 281*bb2d13b6SMartin Matuska 282*bb2d13b6SMartin Matuska CFLAGS="$saved_flags" 283*bb2d13b6SMartin Matuska AC_SUBST([FORMAT_OVERFLOW]) 284*bb2d13b6SMartin Matuska]) 285*bb2d13b6SMartin Matuska 286*bb2d13b6SMartin Matuskadnl # 287c03c5b1cSMartin Matuskadnl # Check if cc supports -fno-omit-frame-pointer option. 288eda14cbcSMatt Macydnl # 289eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER], [ 290eda14cbcSMatt Macy AC_MSG_CHECKING([whether $CC supports -fno-omit-frame-pointer]) 291eda14cbcSMatt Macy 292eda14cbcSMatt Macy saved_flags="$CFLAGS" 293eda14cbcSMatt Macy CFLAGS="$CFLAGS -Werror -fno-omit-frame-pointer" 294eda14cbcSMatt Macy 295eda14cbcSMatt Macy AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 296eda14cbcSMatt Macy NO_OMIT_FRAME_POINTER=-fno-omit-frame-pointer 297eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 298eda14cbcSMatt Macy ], [ 299eda14cbcSMatt Macy NO_OMIT_FRAME_POINTER= 300eda14cbcSMatt Macy AC_MSG_RESULT([no]) 301eda14cbcSMatt Macy ]) 302eda14cbcSMatt Macy 303eda14cbcSMatt Macy CFLAGS="$saved_flags" 304eda14cbcSMatt Macy AC_SUBST([NO_OMIT_FRAME_POINTER]) 305eda14cbcSMatt Macy]) 306eda14cbcSMatt Macy 307eda14cbcSMatt Macydnl # 308eda14cbcSMatt Macydnl # Check if cc supports -fno-ipa-sra option. 309eda14cbcSMatt Macydnl # 310eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_IPA_SRA], [ 311eda14cbcSMatt Macy AC_MSG_CHECKING([whether $CC supports -fno-ipa-sra]) 312eda14cbcSMatt Macy 313eda14cbcSMatt Macy saved_flags="$CFLAGS" 314eda14cbcSMatt Macy CFLAGS="$CFLAGS -Werror -fno-ipa-sra" 315eda14cbcSMatt Macy 316eda14cbcSMatt Macy AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 317eda14cbcSMatt Macy NO_IPA_SRA=-fno-ipa-sra 318eda14cbcSMatt Macy AC_MSG_RESULT([yes]) 319eda14cbcSMatt Macy ], [ 320eda14cbcSMatt Macy NO_IPA_SRA= 321eda14cbcSMatt Macy AC_MSG_RESULT([no]) 322eda14cbcSMatt Macy ]) 323eda14cbcSMatt Macy 324eda14cbcSMatt Macy CFLAGS="$saved_flags" 325eda14cbcSMatt Macy AC_SUBST([NO_IPA_SRA]) 326eda14cbcSMatt Macy]) 327*bb2d13b6SMartin Matuska 328*bb2d13b6SMartin Matuskadnl # 329*bb2d13b6SMartin Matuskadnl # Check if kernel cc supports -fno-ipa-sra option. 330*bb2d13b6SMartin Matuskadnl # 331*bb2d13b6SMartin MatuskaAC_DEFUN([ZFS_AC_CONFIG_ALWAYS_KERNEL_CC_NO_IPA_SRA], [ 332*bb2d13b6SMartin Matuska AC_MSG_CHECKING([whether $KERNEL_CC supports -fno-ipa-sra]) 333*bb2d13b6SMartin Matuska 334*bb2d13b6SMartin Matuska saved_cc="$CC" 335*bb2d13b6SMartin Matuska saved_flags="$CFLAGS" 336*bb2d13b6SMartin Matuska CC="gcc" 337*bb2d13b6SMartin Matuska CFLAGS="$CFLAGS -Werror -fno-ipa-sra" 338*bb2d13b6SMartin Matuska 339*bb2d13b6SMartin Matuska AS_IF([ test -n "$KERNEL_CC" ], [ 340*bb2d13b6SMartin Matuska CC="$KERNEL_CC" 341*bb2d13b6SMartin Matuska ]) 342*bb2d13b6SMartin Matuska AS_IF([ test -n "$KERNEL_LLVM" ], [ 343*bb2d13b6SMartin Matuska CC="clang" 344*bb2d13b6SMartin Matuska ]) 345*bb2d13b6SMartin Matuska 346*bb2d13b6SMartin Matuska AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ 347*bb2d13b6SMartin Matuska KERNEL_NO_IPA_SRA=-fno-ipa-sra 348*bb2d13b6SMartin Matuska AC_MSG_RESULT([yes]) 349*bb2d13b6SMartin Matuska ], [ 350*bb2d13b6SMartin Matuska KERNEL_NO_IPA_SRA= 351*bb2d13b6SMartin Matuska AC_MSG_RESULT([no]) 352*bb2d13b6SMartin Matuska ]) 353*bb2d13b6SMartin Matuska 354*bb2d13b6SMartin Matuska CC="$saved_cc" 355*bb2d13b6SMartin Matuska CFLAGS="$saved_flags" 356*bb2d13b6SMartin Matuska AC_SUBST([KERNEL_NO_IPA_SRA]) 357*bb2d13b6SMartin Matuska]) 358