get rid of alloca() in compiler
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);