Skip to content

Report EDG bugs #1621

Open
Open
@StephanTLavavej

Description

@StephanTLavavej

🆘 Modules (including Header Units)

There are an unknown number of blocking issues for EDG consuming header units and named modules. Currently, EDG coverage is disabled in the header units test, and hasn't been added to the named modules test:

Click to expand env.lst files:

RUNALL_CROSSLIST
PM_CL=""
ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug"
# PM_CL="/analyze:only /analyze:autolog-" # TRANSITION, works correctly but slowly
# PM_CL="/BE" # TRANSITION, VSO-1232145 "EDG ICEs when consuming Standard Library Header Units"

RUNALL_CROSSLIST
PM_CL=""
ASAN PM_CL="-fsanitize=address /Zi" PM_LINK="/debug"

Help wanted: EDG is looking into the issues with header units, but we can accelerate this work by investigating, reducing, and reporting individual issues.

✅ Reported Upstream

  • VSO-1161828 DevCom-10156297 EDGcpfe/23297 EDG: wrong precedence for <=>
  • VSO-1327220 EDGcpfe/24321 EDG doesn't detect narrowing conversions from a user-defined type to a pointer type to bool
  • VSO-1898880 EDGcpfe/26641 EDG fails to handle variable template specializations that differ only in the requires-clause
  • VSO-1898890 EDGcpfe/26576 EDG produces an error for conversion from array to const reference to pointer
  • VSO-1898912 EDGcpfe/26535 EDG does not consider single_view<trivially_copy_assignable_type> to be trivially copy-assignable
  • VSO-1898913 EDGcpfe/26534 Befriending an abbreviated function template makes EDG ignore subsequent members
  • VSO-1898915 EDGcpfe/23896 EDG produces a hard error for can_three_way<bool, int>
  • VSO-1898929 EDGcpfe/25761 EDG rejects requires-clause in a definition within a function template
  • VSO-1898937 EDGcpfe/23985 EDG's __is_convertible_to depends on whether the private members can be accessed in the current context
    • Duplicate: VSO-1898941 EDGcpfe/23985 EDG's default_initializable<const T> has wrong value
    • Duplicate: VSO-1898945 EDGcpfe/23985 EDG's default_initializable<AggregatesExplicitDefault> has wrong value
  • VSO-1898939 EDGcpfe/26746 EDG's __is_constructible has wrong value
  • VSO-1898947 EDGcpfe/26747 EDG's std::nullptr_t has relational operators, but it should not
  • VSO-1898962 EDGcpfe/26750 EDG constexpr dynamic allocations can't handle an array of std::string in debug mode
  • VSO-1900279 EDGcpfe/26763 EDG: Conditional explicit specifier is checked too early in constrained constructor
  • VSO-1900281 EDGcpfe/26539 EDG: Variable template is instantiated too early
  • VSO-1900290 EDGcpfe/25760 EDG thinks a member does not exist in conditional noexcept with friendship
  • VSO-1900293 EDGcpfe/26577 EDG rejects constrained alias template in a pack expansion, when the pack is empty
  • VSO-1900294 EDGcpfe/26749 EDG: Constrained default constructor causes problems
    • Accepted by MSVC in VS 2022 17.8 Preview 5, but rejected by Clang 16.0.5. Clang is probably wrong, see LLVM-60293.
  • VSO-1901430 EDGcpfe/26547 EDG rejects as_const_view with error: atomic constraint depends on itself
  • VSO-1949414 EDGcpfe/27053 EDG incorrectly diagnoses expired storage in constant expression
  • VSO-1949451 EDGcpfe/27058 EDG concepts rejects std::expected trying to propagate triviality of assignment operations
  • VSO-1951821 EDGcpfe/27063 EDG instantiates the wrong overload of promise_type::operator new for generator machinery
  • VSO-1953956 DevCom-10581519 EDGcpfe/27133 EDG incorrectly thinks a pointer to the base class and a pointer to the derived class can be subtracted under some conditions
  • VSO-1956558 EDGcpfe/27056 EDG incorrectly rejects default construction of union with nontrivial member
  • VSO-2254146 DevCom-10747012 EDGcpfe/27684 EDG doesn't handle std::is_empty (__is_empty) properly for potentially-overlapping member subobjects
    • Blocked by MS ABI work.
  • VSO-2430558 DevCom-10880933 EDGcpfe/??? EDG can't handle some generic lambdas in requires-expressions
  • VSO-2459167 DevCom-10896316 EDGcpfe/??? EDG hasn't implemented CWG-2256

🎉 Fixed

  • Fixed in 17.9:
    • VSO-1868335 DevCom-10436970 EDGcpfe/26720 Intellisense doesn't recognize a dependent type in a parameter declaration of a requires expression
    • VSO-1898889 EDGcpfe/26402 EDG thinks that dereferencing a function pointer produces a function (should be a reference to function)
    • VSO-1900278 EDG: Constraint expression cannot be satisfied if it calls a member function of the current class
    • VSO-1900292 EDG fails to handle a requires-clause that involves a local type alias
    • VSO-1900296 EDG thinks that conditional-expression has function type when it should have reference-to-function type
    • VSO-1900276 EDGcpfe/26748 EDG: Default member initializer is instantiated too eagerly when there's a noexcept defaulted default constructor
    • VSO-1898908 EDGcpfe/26758 EDG ICE when a range-based for loop over lvalue iota_view is evaluated in a constant expression
  • Fixed in 17.10:
    • VSO-1900291 EDG ICE involving pointer arithmetic
    • VSO-1951794 EDGcpfe/27055 EDG produces a wrong value for a requires-clause that involves a local type alias
  • Fixed in 17.11:
    • VSO-1948896 EDGcpfe/27054 Catastrophic Edge error involving constexpr std::string in a union
      • ⚠️ This was fixed (VS-PR-539546), but the workaround in P0896R4_views_join still can't be removed, we need to reduce and report again
    • VSO-2016422 EDG hasn't (completely?) implemented CWG-2518 making static_assert(false) usable
    • VSO-2064546 EDG ICE when deriving from std::num_get
  • Fixed in 17.12:
  • Fixed in 17.13:
    • VSO-1898933 EDGcpfe/26745 EDG rejects parenthesized aggregate initialization in a mem-initializer
    • VSO-2086901 DevCom-10678753 EDGcpfe/27599 EDG doesn't properly handle conditionally existing member variable templates in requires-clauses
    • VSO-2188364 EDG assertion failed in conversion_for_direct_reference_binding_possible
    • VSO-2254804 EDG ICE in cpfe.dll!make_coroutine_result_expression with C++23 <generator> test
    • VSO-2283373 EDGcpfe/27658 EDG: Failure to compare pointers to array elements in a constant expression
  • Fixed in 17.14p1:

Metadata

Metadata

Assignees

No one assigned

    Labels

    compilerCompiler work involvedhelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions