compile: initialize local REGS to NIT_NULL
[nit.git] / src / compiling / compiling_icode.nit
index d14b322..7902aea 100644 (file)
@@ -272,7 +272,11 @@ redef class IRoutine
                if std_slots_nb == 0 then
                        v.add_decl("val_t *REG = NULL;")
                else
-                       v.add_decl("val_t REG[{std_slots_nb}];")
+                       var init_vals = new Buffer
+                       init_vals.append "val_t REG[{std_slots_nb}] = \{ NIT_NULL"
+                       for i in [1..std_slots_nb[ do init_vals.append(", NIT_NULL")
+                       init_vals.append " \};"
+                       v.add_decl(init_vals.to_s)
                end
                for i in [0..tag_slots_nb[ do
                        v.add_decl("val_t REGB{i};")
@@ -329,7 +333,7 @@ redef class IRoutine
        # cv must be in the correct function
        fun compile_to_c(cv: CompilerVisitor, cname: String, args: Array[String]): nullable String
        do
-               optimize
+               optimize(cv.module)
                var v = new I2CCompilerVisitor(cv, self, cname)
                return compile_inside_to_c(v, args)
        end