diff --git a/tests/tests-c-compiler/check-src/check-22.-fwide-types.c b/tests/tests-c-compiler/check-src/check-22.-fwide-types.c
index 991f262..2b3a542 100644
--- a/tests/tests-c-compiler/check-src/check-22.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-22.-fwide-types.c
@@ -117,14 +117,11 @@
 
 static void
 try_corrupt(uint8_t *buf, size_t size) {
-	uint8_t *tmp;
-	int i;
+	uint8_t tmp[size];
 
 	fprintf(stderr, "\nCorrupting...\n");
 
-	tmp = alloca(size);
-
-	for(i = 0; i < 1000; i++) {
+	for(int i = 0; i < 1000; i++) {
 		int loc;
 		memcpy(tmp, buf, size);
 
diff --git a/tests/tests-c-compiler/check-src/check-24.-fwide-types.c b/tests/tests-c-compiler/check-src/check-24.-fwide-types.c
index 8cd5476..aad7fb8 100644
--- a/tests/tests-c-compiler/check-src/check-24.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-24.-fwide-types.c
@@ -62,14 +62,11 @@
 
 static void
 try_corrupt(uint8_t *buf, size_t size) {
-	uint8_t *tmp;
-	int i;
+	uint8_t tmp[size];
 
 	fprintf(stderr, "\nCorrupting...\n");
 
-	tmp = alloca(size);
-
-	for(i = 0; i < 1000; i++) {
+	for(int i = 0; i < 1000; i++) {
 		int loc;
 		memcpy(tmp, buf, size);
 
diff --git a/tests/tests-c-compiler/check-src/check-25.-fwide-types.c b/tests/tests-c-compiler/check-src/check-25.-fwide-types.c
index 41a90bf..fda63c3 100644
--- a/tests/tests-c-compiler/check-src/check-25.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-25.-fwide-types.c
@@ -141,14 +141,11 @@
 
 static void
 try_corrupt(uint8_t *buf, size_t size, int allow_consume) {
-	uint8_t *tmp;
-	int i;
+	uint8_t tmp[size];
 
 	fprintf(stderr, "\nCorrupting...\n");
 
-	tmp = alloca(size);
-
-	for(i = 0; i < 1000; i++) {
+	for(int i = 0; i < 1000; i++) {
 		int loc;
 		memcpy(tmp, buf, size);
 
@@ -173,10 +170,9 @@
 partial_read(uint8_t *buf, size_t size) {
 	T_t t, *tp;
 	asn_dec_rval_t rval;
-	size_t i1, i2;
-	uint8_t *tbuf1 = alloca(size);
-	uint8_t *tbuf2 = alloca(size);
-	uint8_t *tbuf3 = alloca(size);
+	uint8_t tbuf1[size];
+	uint8_t tbuf2[size];
+	uint8_t tbuf3[size];
 
 	fprintf(stderr, "\nPartial read sequence...\n");
 
@@ -186,8 +182,8 @@
 	 *   ^ buf                     ^ buf+size
 	 * Try to read block by block.
 	 */
-	for(i1 = 0; i1 < size; i1++) {
-		for(i2 = i1; i2 < size; i2++) {
+	for(size_t i1 = 0; i1 < size; i1++) {
+		for(size_t i2 = i1; i2 < size; i2++) {
 			uint8_t *chunk1 = buf;
 			size_t size1 = i1;
 			uint8_t *chunk2 = buf + size1;
diff --git a/tests/tests-c-compiler/check-src/check-30.-fwide-types.c b/tests/tests-c-compiler/check-src/check-30.-fwide-types.c
index e4a4737..1843080 100644
--- a/tests/tests-c-compiler/check-src/check-30.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-30.-fwide-types.c
@@ -216,14 +216,11 @@
 
 static void
 try_corrupt(uint8_t *buf, size_t size) {
-	uint8_t *tmp;
-	int i;
+	uint8_t tmp[size];
 
 	fprintf(stderr, "\nCorrupting...\n");
 
-	tmp = alloca(size);
-
-	for(i = 0; i < 1000; i++) {
+	for(int i = 0; i < 1000; i++) {
 		int loc;
 		memcpy(tmp, buf, size);
 
diff --git a/tests/tests-c-compiler/check-src/check-31.-fwide-types.c b/tests/tests-c-compiler/check-src/check-31.-fwide-types.c
index 5cc11e3..a6bd772 100644
--- a/tests/tests-c-compiler/check-src/check-31.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-31.-fwide-types.c
@@ -178,14 +178,11 @@
 
 static void
 try_corrupt(uint8_t *buf, size_t size) {
-	uint8_t *tmp;
-	int i;
+	uint8_t tmp[size];
 
 	fprintf(stderr, "\nCorrupting...\n");
 
-	tmp = alloca(size);
-
-	for(i = 0; i < 1000; i++) {
+	for(int i = 0; i < 1000; i++) {
 		int loc;
 		memcpy(tmp, buf, size);
 
diff --git a/tests/tests-c-compiler/check-src/check-35.c b/tests/tests-c-compiler/check-src/check-35.c
index edc2ea2..f4e797c 100644
--- a/tests/tests-c-compiler/check-src/check-35.c
+++ b/tests/tests-c-compiler/check-src/check-35.c
@@ -172,7 +172,8 @@
 	size_t i;
 
 	buf_size = cmp_buf_size + 100;
-	buf = alloca(buf_size);
+    uint8_t scratch[buf_size];
+	buf = scratch;
 	buf_pos = 0;
 
 	/*
@@ -202,9 +203,9 @@
 	T_t t, *tp;
 	asn_dec_rval_t rval;
 	size_t i1, i2;
-	uint8_t *data1 = alloca(size);
-	uint8_t *data2 = alloca(size);
-	uint8_t *data3 = alloca(size);
+	uint8_t data1[size];
+	uint8_t data2[size];
+	uint8_t data3[size];
 
 	fprintf(stderr, "\nPartial read sequence...\n");
 
diff --git a/tests/tests-c-compiler/check-src/check-41.-fwide-types.c b/tests/tests-c-compiler/check-src/check-41.-fwide-types.c
index 6e21cf1..98741f5 100644
--- a/tests/tests-c-compiler/check-src/check-41.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-41.-fwide-types.c
@@ -188,7 +188,8 @@
 	size_t i;
 
 	buf_size = cmp_buf_size + 100;
-	buffer = alloca(buf_size);
+    uint8_t scratch[buf_size];
+	buffer = scratch;
 	buf_pos = 0;
 
 	/*
@@ -211,16 +212,17 @@
 		}
 		assert(buffer[i] == cmp_buf[i]);
 	}
+
+    buffer = 0;
 }
 
 static void
 partial_read(uint8_t *data, size_t size) {
 	T_t t, *tp;
 	asn_dec_rval_t rval;
-	size_t i1, i2;
-	uint8_t *data1 = alloca(size);
-	uint8_t *data2 = alloca(size);
-	uint8_t *data3 = alloca(size);
+	uint8_t data1[size];
+	uint8_t data2[size];
+	uint8_t data3[size];
 
 	fprintf(stderr, "\nPartial read sequence...\n");
 
@@ -230,8 +232,8 @@
 	 *   ^ data                    ^ data+size
 	 * Try to read block by block.
 	 */
-	for(i1 = 0; i1 < size; i1++) {
-		for(i2 = i1; i2 < size; i2++) {
+	for(size_t i1 = 0; i1 < size; i1++) {
+		for(size_t i2 = i1; i2 < size; i2++) {
 			uint8_t *chunk1 = data;
 			size_t size1 = i1;
 			uint8_t *chunk2 = data + size1;
diff --git a/tests/tests-c-compiler/check-src/check-41.c b/tests/tests-c-compiler/check-src/check-41.c
index e076894..483229e 100644
--- a/tests/tests-c-compiler/check-src/check-41.c
+++ b/tests/tests-c-compiler/check-src/check-41.c
@@ -95,7 +95,8 @@
 	int i;
 
 	buf_size = cmp_buf_size + 100;
-	buf = alloca(buf_size);
+    uint8_t scratch[buf_size];
+	buf = scratch;
 	buf_pos = 0;
 
 	/*
@@ -118,16 +119,17 @@
 		}
 		assert(buf[i] == cmp_buf[i]);
 	}
+
+    buf = 0;
 }
 
 static void
 partial_read(uint8_t *buf_0, size_t size) {
 	T_t t, *tp;
 	asn_dec_rval_t rval;
-	size_t i1, i2;
-	uint8_t *buf_1 = alloca(size);
-	uint8_t *buf_2 = alloca(size);
-	uint8_t *buf_3 = alloca(size);
+	uint8_t buf_1[size];
+	uint8_t buf_2[size];
+	uint8_t buf_3[size];
 
 	fprintf(stderr, "\nPartial read sequence...\n");
 
@@ -137,8 +139,8 @@
 	 *   ^ buf_0                    ^ buf_0+size
 	 * Try to read block by block.
 	 */
-	for(i1 = 0; i1 < size; i1++) {
-		for(i2 = i1; i2 < size; i2++) {
+	for(size_t i1 = 0; i1 < size; i1++) {
+		for(size_t i2 = i1; i2 < size; i2++) {
 			uint8_t *chunk1 = buf_0;
 			size_t size1 = i1;
 			uint8_t *chunk2 = buf_0 + size1;
diff --git a/tests/tests-c-compiler/check-src/check-42.c b/tests/tests-c-compiler/check-src/check-42.c
index 8a59410..8d5868e 100644
--- a/tests/tests-c-compiler/check-src/check-42.c
+++ b/tests/tests-c-compiler/check-src/check-42.c
@@ -113,7 +113,8 @@
 
 	asn_fprint(stderr, &asn_DEF_LogLine, &ll);
 	buf_size = 128;
-	buf = alloca(buf_size);
+	uint8_t scratch[buf_size];
+	buf = scratch;
 	erval = der_encode(&asn_DEF_LogLine, &ll, buf_fill, 0);
 	assert(erval.encoded > 1);
 	fprintf(stderr, "Encoded in %zd bytes\n", erval.encoded);
