Specific class layouts meant that the constexpr-ness of a special member could only be decided after every special member was seen. However, this was at odds with the implementation, which checked the constexpr-ness for each special member in the order in which they were declared (hence that the bug only occurs when special members are ordered in a specific order).
This patch moves the checking of constexpr-ness after evaluating each special member.
This fixes https://llvm.org/pr38143
Your new handling should go up here, before we mark the method as finished (rather than marking it as finished twice).