do not check certain features on non-64 systems
diff --git a/asn1c/tests/Makefile.am b/asn1c/tests/Makefile.am
index aa2041b..5f05702 100644
--- a/asn1c/tests/Makefile.am
+++ b/asn1c/tests/Makefile.am
@@ -4,6 +4,9 @@
 TESTS_ENVIRONMENT= CC="${CC}" CFLAGS="${TESTSUITE_CFLAGS} ${CFLAGS} -Wno-error=unused-variable" CXXFLAGS="${CXXFLAGS}" ./check-assembly.sh
 
 TESTS = check-*.c
+if TEST_64BIT
+TESTS += check64-*.c
+endif
 
 EXTRA_DIST =			\
 	check-*.c*		\
diff --git a/asn1c/tests/Makefile.in b/asn1c/tests/Makefile.in
index b6ff016..7204cc8 100644
--- a/asn1c/tests/Makefile.in
+++ b/asn1c/tests/Makefile.in
@@ -33,6 +33,7 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+@TEST_64BIT_TRUE@am__append_1 = check64-*.c
 subdir = asn1c/tests
 DIST_COMMON = README $(dist_check_SCRIPTS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
@@ -174,7 +175,7 @@
 top_srcdir = @top_srcdir@
 dist_check_SCRIPTS = check-assembly.sh
 TESTS_ENVIRONMENT = CC="${CC}" CFLAGS="${TESTSUITE_CFLAGS} ${CFLAGS} -Wno-error=unused-variable" CXXFLAGS="${CXXFLAGS}" ./check-assembly.sh
-TESTS = check-*.c
+TESTS = check-*.c $(am__append_1)
 EXTRA_DIST = \
 	check-*.c*		\
 	data-62			\
diff --git a/asn1c/tests/check-134.-gen-PER.c b/asn1c/tests/check64-134.-gen-PER.c
similarity index 96%
rename from asn1c/tests/check-134.-gen-PER.c
rename to asn1c/tests/check64-134.-gen-PER.c
index 60b79c7..1eaef4e 100644
--- a/asn1c/tests/check-134.-gen-PER.c
+++ b/asn1c/tests/check64-134.-gen-PER.c
@@ -12,13 +12,6 @@
 
 #include <T.h>
 
-#ifndef  _LP64
-int main() {
-    assert(sizeof(void *) < 8);
-    return;
-}
-#else   /* 64-bit platform */
-
 static unsigned long i2ul(const INTEGER_t *i) {
     unsigned long l;
     int ret = asn_INTEGER2ulong(i, &l);
@@ -167,4 +160,3 @@
 	return 0;
 }
 
-#endif  /* 64-bit platform */
diff --git a/configure b/configure
index 52fb46b..81070f3 100755
--- a/configure
+++ b/configure
@@ -635,6 +635,8 @@
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
+TEST_64BIT_FALSE
+TEST_64BIT_TRUE
 TESTSUITE_CFLAGS
 ADD_CFLAGS
 LEXLIB
@@ -13096,6 +13098,40 @@
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long is longer than 32 bit" >&5
+$as_echo_n "checking size of long is longer than 32 bit... " >&6; }
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "confdefs.h"
+#include <sys/types.h>
+
+int
+main ()
+{
+switch (0) case 0: case (sizeof ($1) >= 8):;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  WIDE_LONG=yes
+else
+  WIDE_LONG=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $WIDE_LONG" >&5
+$as_echo "$WIDE_LONG" >&6; }
+ if test x$WIDE_LONG = xyes; then
+  TEST_64BIT_TRUE=
+  TEST_64BIT_FALSE='#'
+else
+  TEST_64BIT_TRUE='#'
+  TEST_64BIT_FALSE=
+fi
+
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getopt" >&5
 $as_echo_n "checking for library containing getopt... " >&6; }
 if ${ac_cv_search_getopt+:} false; then :
@@ -13320,6 +13356,10 @@
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
+if test -z "${TEST_64BIT_TRUE}" && test -z "${TEST_64BIT_FALSE}"; then
+  as_fn_error $? "conditional \"TEST_64BIT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
diff --git a/configure.ac b/configure.ac
index 287f023..bf710e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -62,6 +62,17 @@
 AC_STRUCT_TM
 AC_CHECK_TYPE(intmax_t, int64_t)
 
+dnl Test if we should check features that depend on 64-bitness.
+AC_MSG_CHECKING(size of long is longer than 32 bit)
+AS_VAR_PUSHDEF([WIDE_LONG], [WIDE_LONG])
+AC_TRY_COMPILE([#include "confdefs.h"
+#include <sys/types.h>
+], [switch (0) case 0: case (sizeof ($1) >= 8):;],
+    WIDE_LONG=yes, WIDE_LONG=no)
+AC_MSG_RESULT($WIDE_LONG)
+AM_CONDITIONAL([TEST_64BIT], [test x$WIDE_LONG = xyes])
+AS_VAR_POPDEF([WIDE_LONG])
+
 dnl For mingw
 AC_SEARCH_LIBS(getopt, iberty)