diff --git a/ghc/compiler/reader/Lex.lhs b/ghc/compiler/reader/Lex.lhs
index 32efe30f141573772005ea87b98247f54b5975a5..4e1a0b65c1af3f844e54c62a90d88ef73ad09b9e 100644
--- a/ghc/compiler/reader/Lex.lhs
+++ b/ghc/compiler/reader/Lex.lhs
@@ -176,7 +176,6 @@ data IfaceToken
   | ITdata
   | ITtype
   | ITnewtype
-  | ITderiving
   | ITclass
   | ITwhere
   | ITinstance
@@ -760,7 +759,6 @@ haskellKeywordsFM = listToUFM $
        ,("of",			ITof)
        ,("in",			ITin)
        ,("let",			ITlet)
-       ,("deriving",		ITderiving)
 
        ,("->",			ITrarrow)
        ,("\\",			ITlam)
diff --git a/ghc/compiler/rename/ParseIface.y b/ghc/compiler/rename/ParseIface.y
index b6d5d7b337ca413b00141be1c2b915330f99ceaa..d4dd37b20054e66960b2fd05011df15553a70bf4 100644
--- a/ghc/compiler/rename/ParseIface.y
+++ b/ghc/compiler/rename/ParseIface.y
@@ -44,7 +44,6 @@ import Outputable
 	DATA		    { ITdata }
 	TYPE		    { ITtype }
 	NEWTYPE		    { ITnewtype }
-	DERIVING	    { ITderiving }
 	CLASS		    { ITclass }
 	WHERE		    { ITwhere }
 	INSTANCE	    { ITinstance }
@@ -233,10 +232,10 @@ version		:  INTEGER				{ fromInteger $1 }
 topdecl		:: { RdrNameHsDecl }
 topdecl		:  src_loc TYPE  tc_name tv_bndrs EQUAL type SEMI
 			{ TyD (TySynonym $3 $4 $6 $1) }
-		|  src_loc DATA decl_context tc_name tv_bndrs constrs deriving SEMI
-			{ TyD (TyData DataType $3 $4 $5 $6 $7 noDataPragmas $1) }
-		|  src_loc NEWTYPE decl_context tc_name tv_bndrs newtype_constr deriving SEMI
-			{ TyD (TyData NewType $3 $4 $5 $6 $7 noDataPragmas $1) }
+		|  src_loc DATA decl_context tc_name tv_bndrs constrs SEMI
+			{ TyD (TyData DataType $3 $4 $5 $6 Nothing noDataPragmas $1) }
+		|  src_loc NEWTYPE decl_context tc_name tv_bndrs newtype_constr SEMI
+			{ TyD (TyData NewType $3 $4 $5 $6 Nothing noDataPragmas $1) }
 		|  src_loc CLASS decl_context tc_name tv_bndrs csigs SEMI
 			{ ClD (mkClassDecl $3 $4 $5 $6 EmptyMonoBinds noClassPragmas $1) }
 		|  src_loc var_name TYPE_PART
@@ -295,10 +294,6 @@ newtype_constr	:: { [RdrNameConDecl] {- Empty if handwritten abstract -} }
 newtype_constr	:  					{ [] }
 		| src_loc EQUAL data_name atype		{ [ConDecl $3 [] (NewCon $4) $1] }
 
-deriving	:: { Maybe [RdrName] }
-		: 					{ Nothing }
-		| DERIVING OPAREN tc_names1 CPAREN	{ Just $3 }
-
 batypes		:: { [RdrNameBangType] }
 batypes		:  					{ [] }
 		|  batype batypes			{ $1 : $2 }