reconfigured tests to support -m32 32-bit mode testing with sanitizers
diff --git a/tests/tests-skeletons/check-PER-INTEGER.c b/tests/tests-skeletons/check-PER-INTEGER.c
index d2558c9..2e07a21 100644
--- a/tests/tests-skeletons/check-PER-INTEGER.c
+++ b/tests/tests-skeletons/check-PER-INTEGER.c
@@ -40,6 +40,11 @@
 		printf("%d: Recoding %s %ld [%ld..%lu]\n", lineno,
 		  unsigned_ ? "unsigned" : "signed", value, lbound, ubound);
 
+    if(ubound > LONG_MAX) {
+        printf("Skipped test, unsupported\n");
+        return;
+    }
+
 	memset(&st, 0, sizeof(st));
 	memset(&po, 0, sizeof(po));
 	memset(&pd, 0, sizeof(pd));
@@ -89,8 +94,12 @@
 			| ((uint32_t)po.tmpspace[2] << 8)
 			| ((uint32_t)po.tmpspace[3] << 0);
 		recovered_value = (unsigned long)recovered_value >> (32 - bit_range);
-		recovered_value += cts.value.lower_bound;
-		assert((long)recovered_value == value);
+        if(per_long_range_unrebase(recovered_value, cts.value.lower_bound,
+                                   cts.value.upper_bound, &recovered_value)
+           < 0) {
+            assert(!"Unreachable");
+        }
+		assert(recovered_value == value);
 	}
 	assert(po.nboff == (size_t)((bit_range == 32) ? 0 : (8 - (32 - bit_range))));
 	assert(po.nbits ==  8 * (sizeof(po.tmpspace) - (po.buffer-po.tmpspace)));
@@ -173,6 +182,7 @@
 	CHECK(0, -2147483648, -2147483648, 2147483647, 32);
 	CHECK(0, -10, -2147483648, 2147483647, 32);
 	CHECK(0,  -1, -2147483648, 2147483647, 32);
+	CHECK(0,   0, INT32_MIN, INT32_MAX, 32);
 	CHECK(0,   0, -2147483648, 2147483647, 32);
 	CHECK(0,   1, -2147483648, 2147483647, 32);
 	CHECK(0,  10, -2147483648, 2147483647, 32);
@@ -183,13 +193,17 @@
 	CHECK(1, 10, 0, 4294967295UL, 32);
 	CHECK(1, 2000000000, 0, 4294967295UL, 32);
 	CHECK(1, 2147483647, 0, 4294967295UL, 32);
+
+#ifdef  TEST_64BIT
 	CHECK(1, 2147483648, 0, 4294967295UL, 32);
 	CHECK(1, 4000000000, 0, 4294967295UL, 32);
 	CHECK(1, 4294967295UL, 0, 4294967295UL, 32);
+#endif
 
 	CHECK(1, 10, 10, 4294967285UL, 32);
 	CHECK(1, 11, 10, 4294967285UL, 32);
 
+#ifdef  TEST_64BIT
 	if(sizeof(long) > sizeof(uint32_t)) {
 		CHECK(0,   0, -10, 4294967285UL, 32);
 		CHECK(0,   1, -10, 4294967285UL, 32);
@@ -211,6 +225,7 @@
 		CHECK(u, 2147483648, 0, 4294967295UL, 32);
 		CHECK(u, 4000000000, 0, 4294967295UL, 32);
 	}
+#endif
  }
 
   return 0;