using ioc constraints in run time
diff --git a/libasn1compiler/asn1compiler.c b/libasn1compiler/asn1compiler.c
index 42d55e6..37dca3e 100644
--- a/libasn1compiler/asn1compiler.c
+++ b/libasn1compiler/asn1compiler.c
@@ -2,9 +2,10 @@
 #include "asn1c_lang.h"
 #include "asn1c_out.h"
 #include "asn1c_save.h"
+#include "asn1c_ioc.h"
 
 static void default_logger_cb(int, const char *fmt, ...);
-static int asn1c_compile_expr(arg_t *arg);
+static int asn1c_compile_expr(arg_t *arg, const asn1c_ioc_table_and_objset_t *);
 static int asn1c_attach_streams(asn1p_expr_t *expr);
 static int asn1c_detach_streams(asn1p_expr_t *expr);
 
@@ -42,7 +43,7 @@
 			cs->target = OT_TYPE_DECLS;
 			arg->target = cs;
 
-			ret = asn1c_compile_expr(arg);
+			ret = asn1c_compile_expr(arg, NULL);
 			if(ret) {
 				FATAL("Cannot compile \"%s\" (%x:%x) at line %d",
 					arg->expr->Identifier,
@@ -72,7 +73,7 @@
 }
 
 static int
-asn1c_compile_expr(arg_t *arg) {
+asn1c_compile_expr(arg_t *arg, const asn1c_ioc_table_and_objset_t *opt_ioc) {
 	asn1p_expr_t *expr = arg->expr;
 	int (*type_cb)(arg_t *);
 	int ret;
@@ -99,7 +100,7 @@
 			for(i = 0; i<expr->specializations.pspecs_count; i++) {
 				arg->expr = expr->specializations
 						.pspec[i].my_clone;
-				ret = asn1c_compile_expr(arg);
+				ret = asn1c_compile_expr(arg, opt_ioc);
 				if(ret) break;
 			}
 			arg->expr = expr;	/* Restore */