Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Properly propagate deps for non-POD structs
Bug #1170 is a bug where a type wasn't deemed movable, and because it appeared in a vector, that meant misgeneration of code. Movability calculations are done based on the presence of move constructors for each field type. This analysis is done in a depth-first fashion, to ensure that fields of fields are calculated first. However, this depth-first analysis wasn't working correctly because we weren't considering all the links in that tree. Specifically, a type A was considered to depend on its field type B only for POD structs in the past. It wasn't recognized that such dependency relationships were required even for a non-POD type A, in order that this movability/destroyability calculation could be done correctly for type A. This change ensures that A always depends on B irrespective of whether A is POD or non-POD. This is a fairly significant change to our dependency relationships.
- Loading branch information