FIX #2388: check that the operand fits before using the 'test' opcode
authorSimon Marlow <marlowsd@gmail.com>
Wed, 30 Jul 2008 10:52:31 +0000 (10:52 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 30 Jul 2008 10:52:31 +0000 (10:52 +0000)
compiler/nativeGen/MachCodeGen.hs

index b2f3dff..9901e62 100644 (file)
@@ -2229,7 +2229,7 @@ condIntCode cond (CmmLoad x pk) (CmmLit lit) | is32BitLit lit = do
 -- anything vs zero, using a mask
 -- TODO: Add some sanity checking!!!!
 condIntCode cond (CmmMachOp (MO_And rep) [x,o2]) (CmmLit (CmmInt 0 pk))
-    | (CmmLit (CmmInt mask pk2)) <- o2
+    | (CmmLit lit@(CmmInt mask pk2)) <- o2, is32BitLit lit
     = do
       (x_reg, x_code) <- getSomeReg x
       let