no empty maps

diff --git a/libasn1compiler/asn1c_C.c b/libasn1compiler/asn1c_C.c
index a2a09f2..a8c9f65 100644
--- a/libasn1compiler/asn1c_C.c
+++ b/libasn1compiler/asn1c_C.c
@@ -315,9 +315,15 @@
 		OUT("sizeof(struct "); out_name_chain(arg, 1); OUT("),\n");
 		OUT("offsetof(struct "); out_name_chain(arg, 1); OUT(", _asn_ctx),\n");
 
-		OUT("asn_MAP_%s_%d_tag2el,\n",
-			MKID(expr->Identifier), expr->_type_unique_index);
-		OUT("%d,\t/* Count of tags in the map */\n", tag2el_count);
+		if(tag2el_count) {
+			OUT("asn_MAP_%s_%d_tag2el,\n",
+				MKID(expr->Identifier),
+				expr->_type_unique_index);
+			OUT("%d,\t/* Count of tags in the map */\n", tag2el_count);
+		} else {
+			OUT("0,\t/* No top level tags */\n");
+			OUT("0,\t/* No tags in the map */\n");
+		}
 		OUT("%d,\t/* Start extensions */\n",
 			ext_start);
 		OUT("%d\t/* Stop extensions */\n",
@@ -1425,29 +1431,29 @@
 static int
 emit_tag2member_map(arg_t *arg, tag2el_t *tag2el, int tag2el_count, const char *opt_modifier) {
 	asn1p_expr_t *expr = arg->expr;
+	int i;
+
+	if(!tag2el_count) return 0;	/* No top level tags */
 
 	OUT("static asn_TYPE_tag2member_t asn_MAP_%s_%d_tag2el%s[] = {\n",
 		MKID(expr->Identifier), expr->_type_unique_index,
 		opt_modifier?opt_modifier:"");
-	if(tag2el_count) {
-		int i;
-		for(i = 0; i < tag2el_count; i++) {
-			OUT("    { ");
-			_print_tag(arg, &tag2el[i].el_tag);
-			OUT(", ");
-			OUT("%d, ", tag2el[i].el_no);
-			OUT("%d, ", tag2el[i].toff_first);
-			OUT("%d ", tag2el[i].toff_last);
-			OUT("}%s /* %s at %d */\n",
-				(i + 1 < tag2el_count) ? "," : "",
-				tag2el[i].from_expr->Identifier,
-				tag2el[i].from_expr->_lineno
-			);
-		}
+	for(i = 0; i < tag2el_count; i++) {
+		OUT("    { ");
+		_print_tag(arg, &tag2el[i].el_tag);
+		OUT(", ");
+		OUT("%d, ", tag2el[i].el_no);
+		OUT("%d, ", tag2el[i].toff_first);
+		OUT("%d ", tag2el[i].toff_last);
+		OUT("}%s /* %s at %d */\n",
+			(i + 1 < tag2el_count) ? "," : "",
+			tag2el[i].from_expr->Identifier,
+			tag2el[i].from_expr->_lineno
+		);
 	}
 	OUT("};\n");
 
-	return 0;;
+	return 0;
 }
 
 static enum tvm_compat