Commits

John McCall committed 52ef29618c6
Use different TypeInfo instances for generic types whenever anything major about IRGen for that type would change, including the IR type of the value's components. This generally makes the IR types we use for generic types more precise, which means we also finally need to properly remap loadable dependent types when they appear as the result of a generic function call. This basically only comes up with class-bounded archetypes, which is why we haven't run into it a whole lot before. This all makes a whole lot of things in IRGen involving generic structs a lot happier and, in particular, fixes rdar://17986446, the "Unmanaged is horribly busted" bug. I needed to carve out a big ol' exception for enums, which apparently cannot be reliably specialized with substituted types in all cases because of problems with multi-payload strategies. The exception reinstates the current, incorrect rule of using a shared implementation whenever the pattern has a fixed size. This is rooted in a bunch of deep, known, and tracked problems that I don't have time to solve. Swift SVN r21348