diff --git a/ghc/compiler/prelude/PrelInfo.lhs b/ghc/compiler/prelude/PrelInfo.lhs
index c1e3a9dacc5c8011f2d9f01339696853edff29e9..f176eed187e284c1f2bf63830c38e8b3c5e3beb1 100644
--- a/ghc/compiler/prelude/PrelInfo.lhs
+++ b/ghc/compiler/prelude/PrelInfo.lhs
@@ -611,7 +611,7 @@ deriving_occ_info
     , (ordClassKey, 	[intTyCon_RDR, compose_RDR, eqTag_RDR])
 				-- EQ (from Ordering) is needed to force in the constructors
 				-- as well as the type constructor.
-    , (enumClassKey, 	[intTyCon_RDR, and_RDR, map_RDR, plus_RDR, showsPrec_RDR, append_RDR]) 
+    , (enumClassKey, 	[intTyCon_RDR, eq_RDR, ge_RDR, and_RDR, map_RDR, plus_RDR, showsPrec_RDR, append_RDR]) 
 				-- The last two Enum deps are only used to produce better
 				-- error msgs for derived toEnum methods.
     , (boundedClassKey,	[intTyCon_RDR])
diff --git a/ghc/compiler/typecheck/TcGenDeriv.lhs b/ghc/compiler/typecheck/TcGenDeriv.lhs
index 16d312f44918f0fb511aaffe2259c2d543649f4d..d6ec7f47c753be8c7045abdf2461cfb332783eb8 100644
--- a/ghc/compiler/typecheck/TcGenDeriv.lhs
+++ b/ghc/compiler/typecheck/TcGenDeriv.lhs
@@ -512,8 +512,8 @@ gen_Enum_binds tycon
 		    (mk_easy_App mkInt_RDR [ah_RDR])
 		    (mk_easy_App mkInt_RDR [bh_RDR])
 		    (HsIf  (HsApp (HsApp (HsVar gt_RDR)
-					 (HsVar a_RDR))
-					 (HsVar b_RDR))
+					 (mk_easy_App mkInt_RDR [ah_RDR]))
+					 (mk_easy_App mkInt_RDR [bh_RDR]))
 			   (HsLit (HsInt 0))
 			   (HsVar (maxtag_RDR tycon))
 			   tycon_loc))