orccompiler: Allow fallback to backup/emulation if the target specific register alloc...
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 10 Jan 2013 17:13:32 +0000 (18:13 +0100)
committerDavid Schleef <ds@schleef.org>
Thu, 10 Jan 2013 20:11:54 +0000 (12:11 -0800)
The OrcCode of the program wouldn't be filled with all required fields
if the register allocation happens to early.

orc/orccompiler.c

index 68eb01e..2175206 100644 (file)
@@ -254,12 +254,6 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
   orc_compiler_rewrite_vars (compiler);
   if (compiler->error) goto error;
 
-  if (compiler->target) {
-    orc_compiler_global_reg_alloc (compiler);
-
-    orc_compiler_rewrite_vars2 (compiler);
-  }
-
 #if 0
   {
     ORC_ERROR("variables");
@@ -285,9 +279,6 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
     }
   }
 #endif
-
-  if (compiler->error) goto error;
-
   program->orccode = orc_code_new ();
 
   program->orccode->is_2d = program->is_2d;
@@ -323,6 +314,13 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
     goto error;
   }
 
+  if (compiler->target) {
+    orc_compiler_global_reg_alloc (compiler);
+
+    orc_compiler_rewrite_vars2 (compiler);
+  }
+  if (compiler->error) goto error;
+
   orc_compiler_assign_rules (compiler);
   if (compiler->error) goto error;