| # Check for variable-length arrays. | 
 |  | 
 | # serial 6 | 
 |  | 
 | # From Paul Eggert | 
 |  | 
 | # Copyright (C) 2001, 2009-2022 Free Software Foundation, Inc. | 
 | # This file is free software; the Free Software Foundation | 
 | # gives unlimited permission to copy and/or distribute it, | 
 | # with or without modifications, as long as this notice is preserved. | 
 |  | 
 | m4_version_prereq([2.70], [], [ | 
 |  | 
 | # AC_C_VARARRAYS | 
 | # -------------- | 
 | # Check whether the C compiler supports variable-length arrays. | 
 | AC_DEFUN([AC_C_VARARRAYS], | 
 | [ | 
 |   AC_CACHE_CHECK([for variable-length arrays], | 
 |     ac_cv_c_vararrays, | 
 |     [AC_EGREP_CPP([defined], | 
 |        [#ifdef __STDC_NO_VLA__ | 
 |         defined | 
 |         #endif | 
 |        ], | 
 |        [ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined'], | 
 |        [AC_COMPILE_IFELSE( | 
 |           [AC_LANG_PROGRAM( | 
 |              [[/* Test for VLA support.  This test is partly inspired | 
 |                   from examples in the C standard.  Use at least two VLA | 
 |                   functions to detect the GCC 3.4.3 bug described in: | 
 |                   https://lists.gnu.org/archive/html/bug-gnulib/2014-08/msg00014.html | 
 |                   */ | 
 |                #ifdef __STDC_NO_VLA__ | 
 |                 syntax error; | 
 |                #else | 
 |                  extern int n; | 
 |                  int B[100]; | 
 |                  int fvla (int m, int C[m][m]); | 
 |  | 
 |                  int | 
 |                  simple (int count, int all[static count]) | 
 |                  { | 
 |                    return all[count - 1]; | 
 |                  } | 
 |  | 
 |                  int | 
 |                  fvla (int m, int C[m][m]) | 
 |                  { | 
 |                    typedef int VLA[m][m]; | 
 |                    VLA x; | 
 |                    int D[m]; | 
 |                    static int (*q)[m] = &B; | 
 |                    int (*s)[n] = q; | 
 |                    return C && &x[0][0] == &D[0] && &D[0] == s[0]; | 
 |                  } | 
 |                #endif | 
 |                ]])], | 
 |           [ac_cv_c_vararrays=yes], | 
 |           [ac_cv_c_vararrays=no])])]) | 
 |   if test "$ac_cv_c_vararrays" = yes; then | 
 |     dnl This is for compatibility with Autoconf 2.61-2.69. | 
 |     AC_DEFINE([HAVE_C_VARARRAYS], 1, | 
 |       [Define to 1 if C supports variable-length arrays.]) | 
 |   elif test "$ac_cv_c_vararrays" = no; then | 
 |     AC_DEFINE([__STDC_NO_VLA__], 1, | 
 |       [Define to 1 if C does not support variable-length arrays, and | 
 |        if the compiler does not already define this.]) | 
 |   fi | 
 | ]) | 
 |  | 
 | ]) |