generate "movl lbl(%reg1), %reg2" instructions, better codegen for -fPIC
authorSimon Marlow <marlowsd@gmail.com>
Fri, 18 Jun 2010 08:22:58 +0000 (08:22 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Fri, 18 Jun 2010 08:22:58 +0000 (08:22 +0000)
compiler/nativeGen/X86/CodeGen.hs

index 89a26a9..02abd04 100644 (file)
@@ -991,11 +991,11 @@ getAmode (CmmMachOp (MO_Sub rep) [x, CmmLit lit@(CmmInt i _)])
        let off = ImmInt (-(fromInteger i))
        return (Amode (AddrBaseIndex (EABaseReg x_reg) EAIndexNone off) x_code)
   
-getAmode (CmmMachOp (MO_Add rep) [x, CmmLit lit@(CmmInt i _)])
+getAmode (CmmMachOp (MO_Add rep) [x, CmmLit lit])
   | is32BitLit lit
   -- ASSERT(rep == II32)???
   = do (x_reg, x_code) <- getSomeReg x
-       let off = ImmInt (fromInteger i)
+       let off = litToImm lit
        return (Amode (AddrBaseIndex (EABaseReg x_reg) EAIndexNone off) x_code)
 
 -- Turn (lit1 << n  + lit2) into  (lit2 + lit1 << n) so it will be