Don't try and coalesce RealReg->RealReg moves
authorBen.Lippmeier@anu.edu.au <unknown>
Tue, 19 May 2009 03:55:28 +0000 (03:55 +0000)
committerBen.Lippmeier@anu.edu.au <unknown>
Tue, 19 May 2009 03:55:28 +0000 (03:55 +0000)
compiler/nativeGen/RegAlloc/Graph/Main.hs

index 94b18ae..d239d0d 100644 (file)
@@ -311,9 +311,13 @@ graphAddCoalesce (r1, r2) graph
                (vr2, classOfVirtualReg vr2) 
                graph
 
-       | otherwise
-       = panic "RegAlloc.Graph.Main.graphAddCoalesce: can't coalesce two real regs"
-
+       -- We can't coalesce two real regs, but there could well be existing
+       --      hreg,hreg moves in the input code. We'll just ignore these
+       --      for coalescing purposes.
+       | RegReal _             <- r1
+       , RegReal _             <- r2
+       = graph
+       
 
 -- | Patch registers in code using the reg -> reg mapping in this graph.
 patchRegsFromGraph