You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit fb582ed
Browse filesBrowse the repository at this point in the historyBrowse files
Track GNU vector elements and apply Core issue 616 in C++11 modes [GH #90]
Constant evaluation now marks each element of a GNU vector as initialized
when a whole vector value is stored (at the end of process_expr_work), and
constexpr_copy_object_init_bits copies the state of each element. This
fixes spurious "access to uninitialized object" errors when subscripting a
vector member initialized from a vector value (e.g., Y(a).v[3]).
To keep that sound, reading a whole vector (do_glvalue_to_prvalue) or
copying an object that contains one now requires each element to be
initialized, not only the first.
When emulating GCC 9+ or Clang 4+, selecting a member of a class prvalue
now produces an xvalue in C++11 mode too, as those compilers do.
is_address_of_auto_object now also looks for temporaries on the
addressing path, so returning a pointer into a member of a trivially
destructible class prvalue (e.g., &make().arr[1]) is diagnosed.
The re-recorded imported clang tests improve: cwg6xx loses three bogus
cwg616 errors and expr.const/p2-0x gains its expected volatile error. In
C++11 GNU mode, gnu cpp0x/decltype72 now passes, and gnu
cpp26/name-independent-decl6 and clang C11/n1285 lose a few warnings, as
in C++14 mode.
0 commit comments