<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>It seems to me that we just want to rewrite the case altogether into something that looks at the tag field of the data constructor. Also, in stg we use the same DataCon as in core, but after stg the unboxed sum case really only has one constructor (one with the union of all the fields), which makes it awkward to reuse the original DataCon.</div></div></blockquote><div><br></div><div>Is there a problem with introducing a totally new datatype at this point in the compile to represent the product (tag, wordish1, ..., wordishN, ptr1 ... ptrM)?  Or, if it is an anonymous product, why can't it use existing unboxed sum machinery?</div><div><br></div><div>Also, as an architecture thing, is there a reason this shouldn't be its own stg->stg pass?</div><div><br></div><div>(P.S. "wordish" above has a weaselly suffix because as Dan pointed out, some unboxed things are > 64 bits.)  </div><div><br></div><div><br></div></div></div></div>