diff --git a/config/c-compiler.m4 b/config/c-compiler.m4 index ed26644a48..a3dc7f9cac 100644 --- a/config/c-compiler.m4 +++ b/config/c-compiler.m4 @@ -310,8 +310,12 @@ fi])# PGAC_C_BUILTIN_CONSTANT_P AC_DEFUN([PGAC_C_BUILTIN_OP_OVERFLOW], [AC_CACHE_CHECK(for __builtin_mul_overflow, pgac_cv__builtin_op_overflow, [AC_LINK_IFELSE([AC_LANG_PROGRAM([], -[PG_INT64_TYPE result; -__builtin_mul_overflow((PG_INT64_TYPE) 1, (PG_INT64_TYPE) 2, &result);] +[PG_INT64_TYPE a; +PG_INT64_TYPE b; +PG_INT64_TYPE result; +__builtin_mul_overflow(*(volatile PG_INT64_TYPE*) &a, + *(volatile PG_INT64_TYPE*) &b, + *(volatile PG_INT64_TYPE*) &result);] )], [pgac_cv__builtin_op_overflow=yes], [pgac_cv__builtin_op_overflow=no])]) diff --git a/configure b/configure index ca76ef0ab2..b6d60c97dc 100755 --- a/configure +++ b/configure @@ -14485,8 +14485,12 @@ else int main () { +PG_INT64_TYPE a; +PG_INT64_TYPE b; PG_INT64_TYPE result; -__builtin_mul_overflow((PG_INT64_TYPE) 1, (PG_INT64_TYPE) 2, &result); +__builtin_mul_overflow(*(volatile PG_INT64_TYPE*) &a, + *(volatile PG_INT64_TYPE*) &b, + *(volatile PG_INT64_TYPE*) &result); ; return 0;