@@ -181,6 +181,7 @@ Bug Fixes to Attribute Support
181
181
182
182
Bug Fixes to C++ Support
183
183
^^^^^^^^^^^^^^^^^^^^^^^^
184
+ <<<<<<< HEAD
184
185
- Diagnose binding a reference to ``*nullptr `` during constant evaluation. (#GH48665)
185
186
- Suppress ``-Wdeprecated-declarations `` in implicitly generated functions. (#GH147293)
186
187
- Fix a crash when deleting a pointer to an incomplete array (#GH150359).
@@ -189,6 +190,96 @@ Bug Fixes to C++ Support
189
190
- Fix the dynamic_cast to final class optimization to correctly handle
190
191
casts that are guaranteed to fail (#GH137518).
191
192
- Fix bug rejecting partial specialization of variable templates with auto NTTPs (#GH118190).
193
+ =======
194
+
195
+ - Clang now supports implicitly defined comparison operators for friend declarations. (#GH132249)
196
+ - Clang now diagnoses copy constructors taking the class by value in template instantiations. (#GH130866)
197
+ - Clang is now better at keeping track of friend function template instance contexts. (#GH55509)
198
+ - Clang now prints the correct instantiation context for diagnostics suppressed
199
+ by template argument deduction.
200
+ - Errors that occur during evaluation of certain type traits and builtins are
201
+ no longer incorrectly emitted when they are used in an SFINAE context. The
202
+ type traits are:
203
+
204
+ - ``__is_constructible `` and variants,
205
+ - ``__is_convertible `` and variants,
206
+ - ``__is_assignable `` and variants,
207
+ - ``__reference_binds_to_temporary ``,
208
+ ``__reference_constructs_from_temporary ``,
209
+ ``__reference_converts_from_temporary ``,
210
+ - ``__is_trivially_equality_comparable ``.
211
+
212
+ The builtin is ``__builtin_common_type ``. (#GH132044)
213
+ - Clang is now better at instantiating the function definition after its use inside
214
+ of a constexpr lambda. (#GH125747)
215
+ - Fixed a local class member function instantiation bug inside dependent lambdas. (#GH59734), (#GH132208)
216
+ - Clang no longer crashes when trying to unify the types of arrays with
217
+ certain differences in qualifiers (this could happen during template argument
218
+ deduction or when building a ternary operator). (#GH97005)
219
+ - Fixed type alias CTAD issues involving default template arguments. (#GH134471)
220
+ - Fixed CTAD issues when initializing anonymous fields with designated initializers. (#GH67173)
221
+ - The initialization kind of elements of structured bindings
222
+ direct-list-initialized from an array is corrected to direct-initialization.
223
+ - Clang no longer crashes when a coroutine is declared ``[[noreturn]] ``. (#GH127327)
224
+ - Clang now uses the parameter location for abbreviated function templates in ``extern "C" ``. (#GH46386)
225
+ - Clang will emit an error instead of crash when use co_await or co_yield in
226
+ C++26 braced-init-list template parameter initialization. (#GH78426)
227
+ - Improved fix for an issue with pack expansions of type constraints, where this
228
+ now also works if the constraint has non-type or template template parameters.
229
+ (#GH131798)
230
+ - Fixes to partial ordering of non-type template parameter packs. (#GH132562)
231
+ - Fix crash when evaluating the trailing requires clause of generic lambdas which are part of
232
+ a pack expansion.
233
+ - Fixes matching of nested template template parameters. (#GH130362)
234
+ - Correctly diagnoses template template parameters which have a pack parameter
235
+ not in the last position.
236
+ - Disallow overloading on struct vs class on dependent types, which is IFNDR, as
237
+ this makes the problem diagnosable.
238
+ - Improved preservation of the presence or absence of typename specifier when
239
+ printing types in diagnostics.
240
+ - Clang now correctly parses ``if constexpr `` expressions in immediate function context. (#GH123524)
241
+ - Fixed an assertion failure affecting code that uses C++23 "deducing this". (#GH130272)
242
+ - Clang now properly instantiates destructors for initialized members within non-delegating constructors. (#GH93251)
243
+ - Correctly diagnoses if unresolved using declarations shadows template parameters (#GH129411)
244
+ - Fixed C++20 aggregate initialization rules being incorrectly applied in certain contexts. (#GH131320)
245
+ - Clang was previously coalescing volatile writes to members of volatile base class subobjects.
246
+ The issue has been addressed by propagating qualifiers during derived-to-base conversions in the AST. (#GH127824)
247
+ - Correctly propagates the instantiated array type to the ``DeclRefExpr `` that refers to it. (#GH79750), (#GH113936), (#GH133047)
248
+ - Fixed a Clang regression in C++20 mode where unresolved dependent call expressions were created inside non-dependent contexts (#GH122892)
249
+ - Clang now emits the ``-Wunused-variable `` warning when some structured bindings are unused
250
+ and the ``[[maybe_unused]] `` attribute is not applied. (#GH125810)
251
+ - Declarations using class template argument deduction with redundant
252
+ parentheses around the declarator are no longer rejected. (#GH39811)
253
+ - Fixed a crash caused by invalid declarations of ``std::initializer_list ``. (#GH132256)
254
+ - Clang no longer crashes when establishing subsumption between some constraint expressions. (#GH122581)
255
+ - Clang now issues an error when placement new is used to modify a const-qualified variable
256
+ in a ``constexpr `` function. (#GH131432)
257
+ - Fixed an incorrect TreeTransform for calls to ``consteval `` functions if a conversion template is present. (#GH137885)
258
+ - Clang now emits a warning when class template argument deduction for alias templates is used in C++17. (#GH133806)
259
+ - Fixed a missed initializer instantiation bug for variable templates. (#GH134526), (#GH138122)
260
+ - Fix a crash when checking the template template parameters of a dependent lambda appearing in an alias declaration.
261
+ (#GH136432), (#GH137014), (#GH138018)
262
+ - Fixed an assertion when trying to constant-fold various builtins when the argument
263
+ referred to a reference to an incomplete type. (#GH129397)
264
+ - Fixed a crash when a cast involved a parenthesized aggregate initialization in dependent context. (#GH72880)
265
+ - No longer crashes when instantiating invalid variable template specialization
266
+ whose type depends on itself. (#GH51347), (#GH55872)
267
+ - Improved parser recovery of invalid requirement expressions. In turn, this
268
+ fixes crashes from follow-on processing of the invalid requirement. (#GH138820)
269
+ - Fixed the handling of pack indexing types in the constraints of a member function redeclaration. (#GH138255)
270
+ - Clang now correctly parses arbitrary order of ``[[]] ``, ``__attribute__ `` and ``alignas `` attributes for declarations (#GH133107)
271
+ - Fixed a crash when forming an invalid function type in a dependent context. (#GH138657) (#GH115725) (#GH68852)
272
+ - Clang no longer segfaults when there is a configuration mismatch between modules and their users (http://crbug.com/400353616).
273
+ - Fix an incorrect deduction when calling an explicit object member function template through an overload set address.
274
+ - Fixed bug in constant evaluation that would allow using the value of a
275
+ reference in its own initializer in C++23 mode (#GH131330).
276
+ - Clang could incorrectly instantiate functions in discarded contexts (#GH140449)
277
+ - Fix instantiation of default-initialized variable template specialization. (#GH140632) (#GH140622)
278
+ - Clang modules now allow a module and its user to differ on TrivialAutoVarInit*
279
+ - Fixed an access checking bug when initializing non-aggregates in default arguments (#GH62444), (#GH83608)
280
+ - Fixed a pack substitution bug in deducing class template partial specializations. (#GH53609)
281
+ - Fixed a crash when constant evaluating some explicit object member assignment operators. (#GH142835)
282
+ >>>>>>> 14b0e97a546e (Fix more tests in error handling (#53))
192
283
193
284
Bug Fixes to AST Handling
194
285
^^^^^^^^^^^^^^^^^^^^^^^^^
0 commit comments