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;
