Skip to content

Conversation

@CaseyCarter
Copy link
Contributor

@CaseyCarter CaseyCarter commented Sep 29, 2020

Removes workarounds for:

  • VSO-938163 "constexpr hates pointers", revealing VSO-1132704 "Bogus C3615 when implicitly-constexpr defaulted SMF calls non-trivial SMF in base class" and VSO-1217687 "Casting object reference to base and back loses track of member values in constant expression" beneath.
  • VSO-1002863 "Failure to short-circuit substitution when evaluating disjunction of atomic constraints"
  • VSO-1062618 "Asymmetric behavior from conditional operator with char32_t operands"
  • VSO-1125263 "EDG rejects valid code using consteval"
  • VSO-1132105 "[EDG] Error using non-static data member with dependent type in noexcept-specifier of member function template"
  • VSO-1132186 "[EDG] Weirdness with dependent template in noexcept-specifier"
  • VSO-1178211 "[EDG] Internal compiler error on template template parameter instantiated from inherited template"

Also relabels the workarounds for VSO-1174090 "Assertion failure for member subobject with multiple prospective destructors" (which is fixed!) as workarounds for VSO-1225825 "ModuleReader doesn't understand concept overloading".

As a bonus, remove unnecessary workarounds for DevCom-1159442 "type-constraint in deduced variable type fails when immediately following an if statement"; these type-constraints don't follow the compound-statement of an if conditional, and so don't trigger the bug.

Removes workarounds for:
* VSO-938163 "`constexpr` hates pointers", revealing VSO-1132704 "Bogus C3615 when implicitly-constexpr defaulted SMF calls non-trivial SMF in base class" and VSO-1217687 "Casting object reference to base and back loses track of member values in constant expression" beneath.
* VSO-1002863 "Failure to short-circuit substitution when evaluating disjunction of atomic constraints"
* VSO-1062618 "Asymmetric behavior from conditional operator with char32_t operands"
* VSO-1174090 "Assertion failure for member subobject with multiple prospective destructors"
* VSO-1125263 "EDG rejects valid code using consteval"
* VSO-1132105 "[EDG] Error using non-static data member with dependent type in noexcept-specifier of member function template"
* VSO-1132186 "[EDG] Weirdness with dependent template in noexcept-specifier"
* VSO-1178211 "[EDG] Internal compiler error on template template parameter instantiated from inherited template"

As a bonus, remove unnecessary workarounds for DevCom-1159442 "type-constraint in deduced variable type fails when immediately following an if statement"; these type-constraints don't follow the _compound-statement_ of an `if` conditional, and so don't trigger the bug.
@CaseyCarter CaseyCarter added the enhancement Something can be improved label Sep 29, 2020
@CaseyCarter CaseyCarter requested a review from a team as a code owner September 29, 2020 05:03
Copy link
Contributor

@miscco miscco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All those red lines 👍

@fsb4000
Copy link
Contributor

fsb4000 commented Sep 29, 2020

great, nice work compiler team and @CaseyCarter 👍

Copy link
Member

@StephanTLavavej StephanTLavavej left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This caused the MSVC-internal modules integration tests to fail, so we've had to drop it from the batch of PRs being merged. (I've verified that the modules integration tests are passing without this.) We need to investigate this.

MSVC implements P0848R3 and can now handle these constrained special member functions just fine ... except when imported as a module.
Copy link
Member

@StephanTLavavej StephanTLavavej left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me - one newline comment but you don't need to reset testing for it (it can be fixed when the workaround is finally removed).

@CaseyCarter CaseyCarter merged commit 5be862d into microsoft:master Oct 9, 2020
@CaseyCarter CaseyCarter deleted the workarounds branch October 9, 2020 01:20
@CaseyCarter
Copy link
Contributor Author

CaseyCarter commented Oct 9, 2020

Thanks for this compiler regression test coverage! (I don't think this is Changelog-worthy - shout if I've missed something that users or contributors need to be made aware of.)

@CaseyCarter CaseyCarter removed their assignment Oct 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Something can be improved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants