Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

Deriving Generic of a big type takes a long time and lots of space
If I load the following module into `ghci` my system will run out of memory after about 15 minutes: ``` {-# LANGUAGE DeriveGeneric #-} import GHC.Generics data BigSum = C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | C13 | C14 | C15 | C16 | C17 | C18 | C19 | C20 | C21 | C22 | C23 | C24 | C25 | C26 | C27 | C28 | C29 | C30 | C31 | C32 | C33 | C34 | C35 | C36 | C37 | C38 | C39 | C40 | C41 | C42 | C43 | C44 | C45 | C46 | C47 | C48 | C49 | C50 | C51 | C52 | C53 | C54 | C55 | C56 | C57 | C58 | C59 | C60 | C61 | C62 | C63 | C64 | C65 | C66 | C67 | C68 | C69 | C70 | C71 | C72 | C73 | C74 | C75 | C76 | C77 | C78 | C79 | C80 | C81 | C82 | C83 | C84 | C85 | C86 | C87 | C88 | C89 | C90 | C91 | C92 | C93 | C94 | C95 | C96 | C97 | C98 | C99 | C100 | C101 | C102 | C103 | C104 | C105 | C106 | C107 | C108 | C109 | C110 | C111 | C112 | C113 | C114 | C115 | C116 | C117 | C118 | C119 | C120 | C121 | C122 | C123 | C124 | C125 | C126 | C127 | C128 | C129 | C130 | C131 | C132 | C133 | C134 | C135 | C136 | C137 | C138 | C139 | C140 | C141 | C142 | C143 | C144 | C145 | C146 | C147 | C148 | C149 | C150 | C151 | C152 | C153 | C154 | C155 | C156 | C157 | C158 | C159 | C160 | C161 | C162 | C163 | C164 | C165 | C166 | C167 | C168 | C169 | C170 | C171 | C172 | C173 | C174 | C175 | C176 | C177 | C178 | C179 | C180 | C181 | C182 | C183 | C184 | C185 | C186 | C187 | C188 | C189 | C190 | C191 | C192 | C193 | C194 | C195 | C196 | C197 | C198 | C199 | C200 | C201 | C202 | C203 | C204 | C205 | C206 | C207 | C208 | C209 | C210 | C211 | C212 | C213 | C214 | C215 | C216 | C217 | C218 | C219 | C220 | C221 | C222 | C223 | C224 | C225 | C226 | C227 | C228 | C229 | C230 | C231 | C232 | C233 | C234 | C235 | C236 | C237 | C238 | C239 | C240 | C241 | C242 | C243 | C244 | C245 | C246 | C247 | C248 | C249 | C250 | C251 | C252 | C253 | C254 | C255 | C256 | C257 | C258 | C259 | C260 | C261 | C262 | C263 | C264 | C265 | C266 | C267 | C268 | C269 | C270 | C271 | C272 | C273 | C274 | C275 | C276 | C277 | C278 | C279 | C280 | C281 | C282 | C283 | C284 | C285 | C286 | C287 | C288 | C289 | C290 | C291 | C292 | C293 | C294 | C295 | C296 | C297 | C298 | C299 deriving Generic ``` Big products have the same problem: ``` data BigProduct = C () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () () deriving Generic ``` <details><summary>Trac metadata</summary> | Trac field | Value | | ---------------------- | ------------ | | Version | 7.2.1 | | Type | Bug | | TypeOfFailure | OtherFailure | | Priority | normal | | Resolution | Unresolved | | Component | Compiler | | Test case | | | Differential revisions | | | BlockedBy | | | Related | | | Blocking | | | CC | dreixel | | Operating system | | | Architecture | | </details> <!-- {"blocked_by":[],"summary":"Deriving Generic of a big type takes a long time and lots of space","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"7.2.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["dreixel"],"type":"Bug","description":"If I load the following module into `ghci` my system will run out of memory after about 15 minutes: \r\n\r\n{{{\r\n{-# LANGUAGE DeriveGeneric #-}\r\n\r\nimport GHC.Generics\r\n\r\ndata BigSum = \r\n C0 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 \r\n | C10 | C11 | C12 | C13 | C14 | C15 | C16 | C17 | C18 | C19 \r\n | C20 | C21 | C22 | C23 | C24 | C25 | C26 | C27 | C28 | C29\r\n | C30 | C31 | C32 | C33 | C34 | C35 | C36 | C37 | C38 | C39\r\n | C40 | C41 | C42 | C43 | C44 | C45 | C46 | C47 | C48 | C49\r\n | C50 | C51 | C52 | C53 | C54 | C55 | C56 | C57 | C58 | C59\r\n | C60 | C61 | C62 | C63 | C64 | C65 | C66 | C67 | C68 | C69\r\n | C70 | C71 | C72 | C73 | C74 | C75 | C76 | C77 | C78 | C79\r\n | C80 | C81 | C82 | C83 | C84 | C85 | C86 | C87 | C88 | C89\r\n | C90 | C91 | C92 | C93 | C94 | C95 | C96 | C97 | C98 | C99\r\n | C100 | C101 | C102 | C103 | C104 | C105 | C106 | C107 | C108 | C109\r\n | C110 | C111 | C112 | C113 | C114 | C115 | C116 | C117 | C118 | C119\r\n | C120 | C121 | C122 | C123 | C124 | C125 | C126 | C127 | C128 | C129\r\n | C130 | C131 | C132 | C133 | C134 | C135 | C136 | C137 | C138 | C139\r\n | C140 | C141 | C142 | C143 | C144 | C145 | C146 | C147 | C148 | C149\r\n | C150 | C151 | C152 | C153 | C154 | C155 | C156 | C157 | C158 | C159\r\n | C160 | C161 | C162 | C163 | C164 | C165 | C166 | C167 | C168 | C169\r\n | C170 | C171 | C172 | C173 | C174 | C175 | C176 | C177 | C178 | C179\r\n | C180 | C181 | C182 | C183 | C184 | C185 | C186 | C187 | C188 | C189\r\n | C190 | C191 | C192 | C193 | C194 | C195 | C196 | C197 | C198 | C199\r\n | C200 | C201 | C202 | C203 | C204 | C205 | C206 | C207 | C208 | C209\r\n | C210 | C211 | C212 | C213 | C214 | C215 | C216 | C217 | C218 | C219\r\n | C220 | C221 | C222 | C223 | C224 | C225 | C226 | C227 | C228 | C229\r\n | C230 | C231 | C232 | C233 | C234 | C235 | C236 | C237 | C238 | C239\r\n | C240 | C241 | C242 | C243 | C244 | C245 | C246 | C247 | C248 | C249\r\n | C250 | C251 | C252 | C253 | C254 | C255 | C256 | C257 | C258 | C259\r\n | C260 | C261 | C262 | C263 | C264 | C265 | C266 | C267 | C268 | C269\r\n | C270 | C271 | C272 | C273 | C274 | C275 | C276 | C277 | C278 | C279\r\n | C280 | C281 | C282 | C283 | C284 | C285 | C286 | C287 | C288 | C289\r\n | C290 | C291 | C292 | C293 | C294 | C295 | C296 | C297 | C298 | C299\r\n deriving Generic\r\n}}}\r\n\r\nBig products have the same problem:\r\n\r\n{{{\r\ndata BigProduct = C \r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n () () () () () () () () () ()\r\n deriving Generic\r\n}}}\r\n","type_of_failure":"OtherFailure","blocking":[]} -->
issue