c_src: update
[nit.git] / c_src / analysis._sep.c
index c6a9334..e484f9a 100644 (file)
 /* This C file is generated by NIT to compile module analysis. */
 #include "analysis._sep.h"
+val_t analysis___ToolContext___global_callgraph(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 48;
+  fra.me.meth = LOCATE_analysis___ToolContext___global_callgraph;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:48 */
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_global_callgraph", LOCATE_analysis, 48);
+  }
+  fra.me.REG[0] = ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void analysis___ToolContext___global_callgraph__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 48;
+  fra.me.meth = LOCATE_analysis___ToolContext___global_callgraph__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./analysis//analysis.nit:48 */
+  ATTR_analysis___ToolContext____global_callgraph(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t analysis___ToolContext___no_dead_method_removal(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 49;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_dead_method_removal;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:49 */
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_dead_method_removal", LOCATE_analysis, 49);
+  }
+  REGB0 = ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void analysis___ToolContext___no_dead_method_removal__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 49;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_dead_method_removal__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./analysis//analysis.nit:49 */
+  ATTR_analysis___ToolContext____no_dead_method_removal(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t analysis___ToolContext___no_inline_get_set(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 50;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_inline_get_set;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:50 */
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_inline_get_set", LOCATE_analysis, 50);
+  }
+  REGB0 = ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void analysis___ToolContext___no_inline_get_set__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 50;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_inline_get_set__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./analysis//analysis.nit:50 */
+  ATTR_analysis___ToolContext____no_inline_get_set(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t analysis___ToolContext___no_callgraph_from_init(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_callgraph_from_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:51 */
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_callgraph_from_init", LOCATE_analysis, 51);
+  }
+  REGB0 = ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void analysis___ToolContext___no_callgraph_from_init__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_callgraph_from_init__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./analysis//analysis.nit:51 */
+  ATTR_analysis___ToolContext____no_callgraph_from_init(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t analysis___ToolContext___no_out_of_init_get_test_removal(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 52;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_out_of_init_get_test_removal;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:52 */
+  REGB0 = TAG_Bool(ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_no_out_of_init_get_test_removal", LOCATE_analysis, 52);
+  }
+  REGB0 = ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void analysis___ToolContext___no_out_of_init_get_test_removal__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 52;
+  fra.me.meth = LOCATE_analysis___ToolContext___no_out_of_init_get_test_removal__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./analysis//analysis.nit:52 */
+  ATTR_analysis___ToolContext____no_out_of_init_get_test_removal(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void analysis___Program___do_global_analysis(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+    static val_t once_value_2; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 56;
+  fra.me.meth = LOCATE_analysis___Program___do_global_analysis;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:58 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_program___ToolContext___global(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_analysis, 58);
+  }
+  /* ./analysis//analysis.nit:60 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_analysis___ToolContext___global_callgraph(fra.me.REG[1])(fra.me.REG[1]);
+  if (!once_value_1) {
+    fra.me.REG[2] = BOX_NativeString("cha");
+    REGB0 = TAG_Int(3);
+    fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_1 = fra.me.REG[2];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[2] = once_value_1;
+  fra.me.REG[2] = fra.me.REG[2];
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* ./analysis//analysis.nit:61 */
+    fra.me.REG[2] = NEW_ChaBuilder_cha_analysis___ChaBuilder___init(fra.me.REG[0]);
+    /* ./analysis//analysis.nit:62 */
+    CALL_cha_analysis___ChaBuilder___work(fra.me.REG[2])(fra.me.REG[2]);
+    /* ./analysis//analysis.nit:63 */
+    fra.me.REG[2] = CALL_cha_analysis___ChaBuilder___context(fra.me.REG[2])(fra.me.REG[2]);
+    CALL_reachable_method_analysis___Program___rma__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  } else {
+    /* ./analysis//analysis.nit:64 */
+    fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[2] = CALL_analysis___ToolContext___global_callgraph(fra.me.REG[2])(fra.me.REG[2]);
+    if (!once_value_2) {
+      fra.me.REG[1] = BOX_NativeString("rta");
+      REGB0 = TAG_Int(3);
+      fra.me.REG[1] = NEW_String_string___String___with_native(fra.me.REG[1], REGB0);
+      once_value_2 = fra.me.REG[1];
+      register_static_object(&once_value_2);
+    } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+      REGB0 = REGB1;
+    }
+    if (UNTAG_Bool(REGB0)) {
+      /* ./analysis//analysis.nit:65 */
+      fra.me.REG[1] = NEW_RtaBuilder_rta_analysis___RtaBuilder___init(fra.me.REG[0]);
+      /* ./analysis//analysis.nit:66 */
+      CALL_rta_analysis___RtaBuilder___work(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./analysis//analysis.nit:67 */
+      fra.me.REG[2] = CALL_rta_analysis___RtaBuilder___context(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_reachable_method_analysis___Program___rma__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+      /* ./analysis//analysis.nit:68 */
+      fra.me.REG[1] = CALL_rta_analysis___RtaBuilder___context(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_instantiated_type_analysis___Program___ita__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    }
+  }
+  /* ./analysis//analysis.nit:72 */
+  fra.me.REG[1] = CALL_reachable_method_analysis___Program___rma(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[1] = NEW_DefaultReachableMethodAnalysis_reachable_method_analysis___DefaultReachableMethodAnalysis___init();
+    CALL_reachable_method_analysis___Program___rma__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  /* ./analysis//analysis.nit:73 */
+  fra.me.REG[1] = CALL_instantiated_type_analysis___Program___ita(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[1] = NEW_DefaultInstantiatedTypeAnalysis_instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init();
+    CALL_instantiated_type_analysis___Program___ita__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  /* ./analysis//analysis.nit:75 */
+  fra.me.REG[1] = NEW_ReachableAsInitBuilder_reachable_as_init_impl___ReachableAsInitBuilder___init(fra.me.REG[0]);
+  /* ./analysis//analysis.nit:76 */
+  CALL_reachable_as_init_impl___ReachableAsInitBuilder___work(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./analysis//analysis.nit:77 */
+  fra.me.REG[1] = CALL_reachable_as_init_impl___ReachableAsInitBuilder___context(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_reachable_as_init___Program___rai__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:79 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_analysis___ToolContext___no_callgraph_from_init(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./analysis//analysis.nit:80 */
+    fra.me.REG[1] = NEW_RFIMABuilder_reachable_from_init_method_analysis_impl___RFIMABuilder___init(fra.me.REG[0]);
+    /* ./analysis//analysis.nit:81 */
+    CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___work(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./analysis//analysis.nit:82 */
+    fra.me.REG[1] = CALL_reachable_from_init_method_analysis_impl___RFIMABuilder___context(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_reachable_from_init_method_analysis___Program___rfima__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  /* ./analysis//analysis.nit:85 */
+  fra.me.REG[1] = CALL_reachable_from_init_method_analysis___Program___rfima(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[1] = NEW_DefaultReachableFromInitMethodAnalysis_reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init();
+    CALL_reachable_from_init_method_analysis___Program___rfima__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void analysis___Program___do_global_pre_analysis_optimizations(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 88;
+  fra.me.meth = LOCATE_analysis___Program___do_global_pre_analysis_optimizations;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:91 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_program___ToolContext___global(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_analysis, 91);
+  }
+  /* ./analysis//analysis.nit:92 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_analysis___ToolContext___no_inline_get_set(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    CALL_inline_get_and_set___Program___inline_get_set(fra.me.REG[0])(fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void analysis___Program___do_global_post_analysis_optimizations(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 95;
+  fra.me.meth = LOCATE_analysis___Program___do_global_post_analysis_optimizations;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./analysis//analysis.nit:98 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_program___ToolContext___global(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_analysis, 98);
+  }
+  /* ./analysis//analysis.nit:99 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_analysis___ToolContext___no_dead_method_removal(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    CALL_dead_method_removal___Program___optimize_dead_methods(fra.me.REG[0])(fra.me.REG[0]);
+  }
+  /* ./analysis//analysis.nit:100 */
+  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_analysis___ToolContext___no_out_of_init_get_test_removal(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    CALL_remove_out_of_init_get_test___Program___optimize_out_of_init_getters(fra.me.REG[0])(fra.me.REG[0]);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void analysis___Program___dump_global_optimizations_information(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 103;
+  fra.me.meth = LOCATE_analysis___Program___dump_global_optimizations_information;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./analysis//analysis.nit:104 */
+  CALL_remove_out_of_init_get_test___Program___dump_out_of_init_information(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:105 */
+  CALL_dead_method_removal___Program___dump_dead_method_optimization(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:106 */
+  CALL_inline_get_and_set___Program___dump_inline_get_set(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void analysis___Program___dump_global_analysis_information(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_analysis;
+  fra.me.line = 109;
+  fra.me.meth = LOCATE_analysis___Program___dump_global_analysis_information;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./analysis//analysis.nit:111 */
+  fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_analysis___ToolContext___global_callgraph(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_reachable_method_analysis___Program___dump_reachable_methods(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  /* ./analysis//analysis.nit:112 */
+  fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_analysis___ToolContext___global_callgraph(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_reachable_method_analysis___Program___dump_unreachable_methods(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  /* ./analysis//analysis.nit:113 */
+  CALL_instantiated_type_analysis___Program___dump_instantiated_types(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:114 */
+  CALL_instantiated_type_analysis___Program___dump_not_instantiated_types(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:115 */
+  CALL_reachable_as_init___Program___dump_reachable_as_init_methods(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:116 */
+  CALL_reachable_from_init_method_analysis___Program___dump_reachable_methods_from_init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./analysis//analysis.nit:117 */
+  CALL_reachable_from_init_method_analysis___Program___dump_unreachable_methods_from_init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
 void analysis___IRoutine___optimize(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_analysis;
-  fra.me.line = 26;
+  fra.me.line = 122;
   fra.me.meth = LOCATE_analysis___IRoutine___optimize;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -13,9 +494,9 @@ void analysis___IRoutine___optimize(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./analysis//analysis.nit:29 */
+  /* ./analysis//analysis.nit:125 */
   CALL_inline_methods___IRoutine___inline_methods(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./analysis//analysis.nit:30 */
+  /* ./analysis//analysis.nit:126 */
   CALL_allocate_iregister_slots___IRoutine___allocate_iregister_slots(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;