Commits

Michael Gottesman committed a06cacbfcb2
[projection] Introduce two new types NewProjection and NewProjectionPath. NewProjection is a re-architecting of Projection that supports all of the same functionality as Projection but in 1/3 of the original size (in the common case). It is able to accomplish this by removing the base type out of NewProjection itself and into users such as NewProjectionPath. Thus NewProjection is now strictly an index from some parent type rather than being a parent type and an index. NewProjectionPath also has all of the same functionality as ProjectionPath, but due to NewProjection being smaller than Projection is smaller than ProjectionPath. Used together NewProjection/NewProjectionPath yields the same output as Projection/ProjectionPath when evaluating the LSLocation dumping tests. Additionally, NewProjection is more flexible than Projection and will for free give us the ability to perform AA on index_addr/index_raw_addr as well as be able to integrate casts into the projection paradigm. rdar://22484381