Blame m4/intdiv0.m4

Packit Service 9f2c4a
# intdiv0.m4 serial 1 (gettext-0.11.3)
Packit Service 9f2c4a
dnl Copyright (C) 2002 Free Software Foundation, Inc.
Packit Service 9f2c4a
dnl This file is free software, distributed under the terms of the GNU
Packit Service 9f2c4a
dnl General Public License.  As a special exception to the GNU General
Packit Service 9f2c4a
dnl Public License, this file may be distributed as part of a program
Packit Service 9f2c4a
dnl that contains a configuration script generated by Autoconf, under
Packit Service 9f2c4a
dnl the same distribution terms as the rest of that program.
Packit Service 9f2c4a
Packit Service 9f2c4a
dnl From Bruno Haible.
Packit Service 9f2c4a
Packit Service 9f2c4a
AC_DEFUN([gt_INTDIV0],
Packit Service 9f2c4a
[
Packit Service 9f2c4a
  AC_REQUIRE([AC_PROG_CC])dnl
Packit Service 9f2c4a
  AC_REQUIRE([AC_CANONICAL_HOST])dnl
Packit Service 9f2c4a
Packit Service 9f2c4a
  AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
Packit Service 9f2c4a
    gt_cv_int_divbyzero_sigfpe,
Packit Service 9f2c4a
    [
Packit Service 9f2c4a
      AC_TRY_RUN([
Packit Service 9f2c4a
#include <stdlib.h>
Packit Service 9f2c4a
#include <signal.h>
Packit Service 9f2c4a
Packit Service 9f2c4a
static void
Packit Service 9f2c4a
#ifdef __cplusplus
Packit Service 9f2c4a
sigfpe_handler (int sig)
Packit Service 9f2c4a
#else
Packit Service 9f2c4a
sigfpe_handler (sig) int sig;
Packit Service 9f2c4a
#endif
Packit Service 9f2c4a
{
Packit Service 9f2c4a
  /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
Packit Service 9f2c4a
  exit (sig != SIGFPE);
Packit Service 9f2c4a
}
Packit Service 9f2c4a
Packit Service 9f2c4a
int x = 1;
Packit Service 9f2c4a
int y = 0;
Packit Service 9f2c4a
int z;
Packit Service 9f2c4a
int nan;
Packit Service 9f2c4a
Packit Service 9f2c4a
int main ()
Packit Service 9f2c4a
{
Packit Service 9f2c4a
  signal (SIGFPE, sigfpe_handler);
Packit Service 9f2c4a
/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
Packit Service 9f2c4a
#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
Packit Service 9f2c4a
  signal (SIGTRAP, sigfpe_handler);
Packit Service 9f2c4a
#endif
Packit Service 9f2c4a
/* Linux/SPARC yields signal SIGILL.  */
Packit Service 9f2c4a
#if defined (__sparc__) && defined (__linux__)
Packit Service 9f2c4a
  signal (SIGILL, sigfpe_handler);
Packit Service 9f2c4a
#endif
Packit Service 9f2c4a
Packit Service 9f2c4a
  z = x / y;
Packit Service 9f2c4a
  nan = y / y;
Packit Service 9f2c4a
  exit (1);
Packit Service 9f2c4a
}
Packit Service 9f2c4a
], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
Packit Service 9f2c4a
        [
Packit Service 9f2c4a
          # Guess based on the CPU.
Packit Service 9f2c4a
          case "$host_cpu" in
Packit Service 9f2c4a
            alpha* | i[34567]86 | m68k | s390*)
Packit Service 9f2c4a
              gt_cv_int_divbyzero_sigfpe="guessing yes";;
Packit Service 9f2c4a
            *)
Packit Service 9f2c4a
              gt_cv_int_divbyzero_sigfpe="guessing no";;
Packit Service 9f2c4a
          esac
Packit Service 9f2c4a
        ])
Packit Service 9f2c4a
    ])
Packit Service 9f2c4a
  case "$gt_cv_int_divbyzero_sigfpe" in
Packit Service 9f2c4a
    *yes) value=1;;
Packit Service 9f2c4a
    *) value=0;;
Packit Service 9f2c4a
  esac
Packit Service 9f2c4a
  AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
Packit Service 9f2c4a
    [Define if integer division by zero raises signal SIGFPE.])
Packit Service 9f2c4a
])