codegen: workaround for a emitBB bug
authorBernhard Urban <lewurm@gmail.com>
Wed, 13 Jun 2012 22:09:00 +0000 (00:09 +0200)
committerBernhard Urban <lewurm@gmail.com>
Wed, 13 Jun 2012 22:09:46 +0000 (00:09 +0200)
Mate/X86CodeGen.hs

index d895d63991857363ade7bfc903435f241630d6f8..e365367619d3c7374fa0927768826d1827479d65 100644 (file)
@@ -322,10 +322,17 @@ emitFromBB method sig cls hmap =  do
     emitIF cond = let
       sid = case successor bb of TwoTarget _ t -> t; _ -> error "bad"
       l = getLabel sid lmap
-      in case cond of
-        C_EQ -> je  l; C_NE -> jne l
-        C_LT -> jl  l; C_GT -> jg  l
-        C_GE -> jge l; C_LE -> jle l
+      sid2 = case successor bb of TwoTarget t _ -> t; _ -> error "bad"
+      l2 = getLabel sid2 lmap
+      in do
+        case cond of
+          C_EQ -> je  l; C_NE -> jne l
+          C_LT -> jl  l; C_GT -> jg  l
+          C_GE -> jge l; C_LE -> jle l
+        -- TODO(bernhard): ugly workaround, to get broken emitBB working
+        --  (it didn't work for gnu/classpath/SystemProperties.java)
+        jmp l2
+
 
     callMalloc :: CodeGen e s ()
     callMalloc = do