diff --git a/ghc/compiler/nativeGen/RegAllocInfo.lhs b/ghc/compiler/nativeGen/RegAllocInfo.lhs
index 4db8a0b03fd7938e7200beb0ce7d1626fa6671b9..f6f7e6f3f3c8111211d42f339707906b8869eea4 100644
--- a/ghc/compiler/nativeGen/RegAllocInfo.lhs
+++ b/ghc/compiler/nativeGen/RegAllocInfo.lhs
@@ -52,8 +52,7 @@ module RegAllocInfo (
     ) where
 
 #if __GLASGOW_HASKELL__ >= 202
-import qualified GlaExts (Addr(..))
-import GlaExts hiding (Addr(..))
+import GlaExts
 import FastString
 #else
 IMP_Ubiq(){-uitous-}
@@ -375,9 +374,9 @@ regUsage instr = case instr of
     XOR  sz src dst	-> usage2 src dst
     NOT  sz op		-> usage1 op
     NEGI sz op		-> usage1 op
-    SHL  sz imm dst	-> usage1 dst -- imm has to be an Imm
-    SAR  sz imm dst	-> usage1 dst -- imm has to be an Imm
-    SHR  sz imm dst	-> usage1 dst -- imm has to be an Imm
+    SHL  sz dst len	-> usage2 dst len -- len is either an Imm or ecx.
+    SAR  sz dst len	-> usage2 dst len -- len is either an Imm or ecx.
+    SHR  sz len dst	-> usage2 dst len -- len is either an Imm or ecx.
     PUSH sz op		-> usage (opToReg op) []
     POP  sz op		-> usage [] (opToReg op)
     TEST sz src dst	-> usage (opToReg src ++ opToReg dst) []
@@ -449,7 +448,7 @@ regUsage instr = case instr of
     opToReg (OpImm imm)   = []
     opToReg (OpAddr  ea)  = addrToRegs ea
 
-    addrToRegs (Addr base index _) = baseToReg base ++ indexToReg index
+    addrToRegs (Address base index _) = baseToReg base ++ indexToReg index
       where  baseToReg Nothing       = []
 	     baseToReg (Just r)      = [r]
 	     indexToReg Nothing      = []
@@ -672,9 +671,9 @@ patchRegs instr env = case instr of
     XOR  sz src dst	-> patch2 (XOR  sz) src dst
     NOT  sz op 		-> patch1 (NOT  sz) op
     NEGI sz op		-> patch1 (NEGI sz) op
-    SHL  sz imm dst 	-> patch1 (SHL  sz imm) dst
-    SAR  sz imm dst 	-> patch1 (SAR  sz imm) dst
-    SHR  sz imm dst 	-> patch1 (SHR  sz imm) dst
+    SHL  sz imm dst 	-> patch2 (SHL  sz) imm dst
+    SAR  sz imm dst 	-> patch2 (SAR  sz) imm dst
+    SHR  sz imm dst 	-> patch2 (SHR  sz) imm dst
     TEST sz src dst	-> patch2 (TEST sz) src dst
     CMP  sz src dst	-> patch2 (CMP  sz) src dst
     PUSH sz op		-> patch1 (PUSH sz) op
@@ -716,8 +715,8 @@ patchRegs instr env = case instr of
     patchOp (OpAddr ea)  = OpAddr (lookupAddr ea)
 
     lookupAddr (ImmAddr imm off) = ImmAddr imm off
-    lookupAddr (Addr base index disp)
-      = Addr (lookupBase base) (lookupIndex index) disp
+    lookupAddr (Address base index disp)
+      = Address (lookupBase base) (lookupIndex index) disp
       where
 	lookupBase Nothing       = Nothing
 	lookupBase (Just r)      = Just (env r)