<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/clang/lib/CodeGen/CGExprCXX.cpp, branch users/nico/python-1</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[clang][NFC] Remove dead PassTypeToPlacementDelete field (#143448)</title>
<updated>2025-06-10T06:28:33+00:00</updated>
<author>
<name>Oliver Hunt</name>
<email>oliver@apple.com</email>
</author>
<published>2025-06-10T06:28:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=487e757f3e587aedc1668fb9cb18a8d464913605'/>
<id>487e757f3e587aedc1668fb9cb18a8d464913605</id>
<content type='text'>
The CallDeleteDuringNew::PassTypeToPlacementDelete field became unneeded
during the many refactorings of P2719 but I didn't actually remove it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The CallDeleteDuringNew::PassTypeToPlacementDelete field became unneeded
during the many refactorings of P2719 but I didn't actually remove it.</pre>
</div>
</content>
</entry>
<entry>
<title>clang: Remove dest LangAS argument from performAddrSpaceCast (#138866)</title>
<updated>2025-05-09T12:24:54+00:00</updated>
<author>
<name>Matt Arsenault</name>
<email>Matthew.Arsenault@amd.com</email>
</author>
<published>2025-05-09T12:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5ae2aed218470783e6c7a2d255c7946f4549cb46'/>
<id>5ae2aed218470783e6c7a2d255c7946f4549cb46</id>
<content type='text'>
It isn't used and is redundant with the result pointer type argument.
A more reasonable API would only have LangAS parameters, or IR parameters,
not both. Not all values have a meaningful value for this. I'm also
not sure why we have this at all, it's not overridden by any targets and
further simplification is possible.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It isn't used and is redundant with the result pointer type argument.
A more reasonable API would only have LangAS parameters, or IR parameters,
not both. Not all values have a meaningful value for this. I'm also
not sure why we have this at all, it's not overridden by any targets and
further simplification is possible.</pre>
</div>
</content>
</entry>
<entry>
<title>[MS][clang] Revert vector deleting destructors support (#135611)</title>
<updated>2025-04-14T12:17:36+00:00</updated>
<author>
<name>Mariya Podchishchaeva</name>
<email>mariya.podchishchaeva@intel.com</email>
</author>
<published>2025-04-14T12:17:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=88d0b0835d030635c5d08c9a9754c21b5ac00be9'/>
<id>88d0b0835d030635c5d08c9a9754c21b5ac00be9</id>
<content type='text'>
Finding operator delete[] is still problematic, without it the extension
is a security hazard, so reverting until the problem with operator
delete[] is figured out.

This reverts the following PRs:
Reland [MS][clang] Add support for vector deleting destructors (llvm#133451)
[MS][clang] Make sure vector deleting dtor calls correct operator delete (llvm#133950)
[MS][clang] Fix crash on deletion of array of pointers (llvm#134088)
[clang] Do not diagnose unused deleted operator delete[] (llvm#134357)
[MS][clang] Error about ambiguous operator delete[] only when required (llvm#135041)</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Finding operator delete[] is still problematic, without it the extension
is a security hazard, so reverting until the problem with operator
delete[] is figured out.

This reverts the following PRs:
Reland [MS][clang] Add support for vector deleting destructors (llvm#133451)
[MS][clang] Make sure vector deleting dtor calls correct operator delete (llvm#133950)
[MS][clang] Fix crash on deletion of array of pointers (llvm#134088)
[clang] Do not diagnose unused deleted operator delete[] (llvm#134357)
[MS][clang] Error about ambiguous operator delete[] only when required (llvm#135041)</pre>
</div>
</content>
</entry>
<entry>
<title>[RFC] Initial implementation of P2719 (#113510)</title>
<updated>2025-04-11T00:13:10+00:00</updated>
<author>
<name>Oliver Hunt</name>
<email>oliver@apple.com</email>
</author>
<published>2025-04-11T00:13:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=1cd59264aa2fb4b0ba70ff03c1298b1b5c21271e'/>
<id>1cd59264aa2fb4b0ba70ff03c1298b1b5c21271e</id>
<content type='text'>
This is a basic implementation of P2719: "Type-aware allocation and
deallocation functions" described at http://wg21.link/P2719

The proposal includes some more details but the basic change in
functionality is the addition of support for an additional implicit
parameter in operators `new` and `delete` to act as a type tag. Tag is
of type `std::type_identity&lt;T&gt;` where T is the concrete type being
allocated. So for example, a custom type specific allocator for `int`
say can be provided by the declaration of

  void *operator new(std::type_identity&lt;int&gt;, size_t, std::align_val_t);
  void  operator delete(std::type_identity&lt;int&gt;, void*, size_t, std::align_val_t);

However this becomes more powerful by specifying templated declarations,
for example

template &lt;typename T&gt; void *operator new(std::type_identity&lt;T&gt;, size_t, std::align_val_t);
template &lt;typename T&gt; void operator delete(std::type_identity&lt;T&gt;, void*, size_t, std::align_val_t););

Where the operators being resolved will be the concrete type being
operated over (NB. A completely unconstrained global definition as above
is not recommended as it triggers many problems similar to a general
override of the global operators).

These type aware operators can be declared as either free functions or
in class, and can be specified with or without the other implicit
parameters, with overload resolution performed according to the existing
standard parameter prioritisation, only with type parameterised
operators having higher precedence than non-type aware operators. The
only exception is destroying_delete which for reasons discussed in the
paper we do not support type-aware variants by default.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a basic implementation of P2719: "Type-aware allocation and
deallocation functions" described at http://wg21.link/P2719

The proposal includes some more details but the basic change in
functionality is the addition of support for an additional implicit
parameter in operators `new` and `delete` to act as a type tag. Tag is
of type `std::type_identity&lt;T&gt;` where T is the concrete type being
allocated. So for example, a custom type specific allocator for `int`
say can be provided by the declaration of

  void *operator new(std::type_identity&lt;int&gt;, size_t, std::align_val_t);
  void  operator delete(std::type_identity&lt;int&gt;, void*, size_t, std::align_val_t);

However this becomes more powerful by specifying templated declarations,
for example

template &lt;typename T&gt; void *operator new(std::type_identity&lt;T&gt;, size_t, std::align_val_t);
template &lt;typename T&gt; void operator delete(std::type_identity&lt;T&gt;, void*, size_t, std::align_val_t););

Where the operators being resolved will be the concrete type being
operated over (NB. A completely unconstrained global definition as above
is not recommended as it triggers many problems similar to a general
override of the global operators).

These type aware operators can be declared as either free functions or
in class, and can be specified with or without the other implicit
parameters, with overload resolution performed according to the existing
standard parameter prioritisation, only with type parameterised
operators having higher precedence than non-type aware operators. The
only exception is destroying_delete which for reasons discussed in the
paper we do not support type-aware variants by default.
</pre>
</div>
</content>
</entry>
<entry>
<title>Reland [MS][clang] Add support for vector deleting destructors (#133451)</title>
<updated>2025-03-31T08:03:39+00:00</updated>
<author>
<name>Mariya Podchishchaeva</name>
<email>mariya.podchishchaeva@intel.com</email>
</author>
<published>2025-03-31T08:03:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=842b57b77520abf202999946d3bb01b5dcabb179'/>
<id>842b57b77520abf202999946d3bb01b5dcabb179</id>
<content type='text'>
Whereas it is UB in terms of the standard to delete an array of objects
via pointer whose static type doesn't match its dynamic type, MSVC
supports an extension allowing to do it.
Aside from array deletion not working correctly in the mentioned case,
currently not having this extension implemented causes clang to generate
code that is not compatible with the code generated by MSVC, because
clang always puts scalar deleting destructor to the vftable. This PR
aims to resolve these problems.

It was reverted due to link time errors in chromium with sanitizer
coverage enabled,
which is fixed by https://github.com/llvm/llvm-project/pull/131929 .

The second commit of this PR also contains a fix for a runtime failure
in chromium reported
in
https://github.com/llvm/llvm-project/pull/126240#issuecomment-2730216384
.

Fixes https://github.com/llvm/llvm-project/issues/19772</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Whereas it is UB in terms of the standard to delete an array of objects
via pointer whose static type doesn't match its dynamic type, MSVC
supports an extension allowing to do it.
Aside from array deletion not working correctly in the mentioned case,
currently not having this extension implemented causes clang to generate
code that is not compatible with the code generated by MSVC, because
clang always puts scalar deleting destructor to the vftable. This PR
aims to resolve these problems.

It was reverted due to link time errors in chromium with sanitizer
coverage enabled,
which is fixed by https://github.com/llvm/llvm-project/pull/131929 .

The second commit of this PR also contains a fix for a runtime failure
in chromium reported
in
https://github.com/llvm/llvm-project/pull/126240#issuecomment-2730216384
.

Fixes https://github.com/llvm/llvm-project/issues/19772</pre>
</div>
</content>
</entry>
<entry>
<title>Reland: [clang] NFC: Clear some uses of MemberPointerType::getClass (#132317)</title>
<updated>2025-03-21T13:54:24+00:00</updated>
<author>
<name>Matheus Izvekov</name>
<email>mizvekov@gmail.com</email>
</author>
<published>2025-03-21T13:54:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=141656644959ea43b61868ef16e3d2782d40ea51'/>
<id>141656644959ea43b61868ef16e3d2782d40ea51</id>
<content type='text'>
Relands Original PR: https://github.com/llvm/llvm-project/pull/131965
Addresses
https://github.com/llvm/llvm-project/pull/131965#issuecomment-2741619498
* Fixes isIncompleteType for injected classes

This clears up some uses of getClass on MemberPointerType when
equivalent uses of getMostRecentCXXRecordDecl would be just as simple or
simpler.
    
This is split-off from a larger patch which removes getClass, in order
to facilitate review.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Relands Original PR: https://github.com/llvm/llvm-project/pull/131965
Addresses
https://github.com/llvm/llvm-project/pull/131965#issuecomment-2741619498
* Fixes isIncompleteType for injected classes

This clears up some uses of getClass on MemberPointerType when
equivalent uses of getMostRecentCXXRecordDecl would be just as simple or
simpler.
    
This is split-off from a larger patch which removes getClass, in order
to facilitate review.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[clang] NFC: Clear some uses of MemberPointerType::getClass" (#132281)</title>
<updated>2025-03-20T20:54:21+00:00</updated>
<author>
<name>Matheus Izvekov</name>
<email>mizvekov@gmail.com</email>
</author>
<published>2025-03-20T20:54:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=335a4614dee4123ff4f86e6400fc6a305766e227'/>
<id>335a4614dee4123ff4f86e6400fc6a305766e227</id>
<content type='text'>
Reverts llvm/llvm-project#131965

Reverted due to issue reported here:
https://github.com/llvm/llvm-project/pull/131965#issuecomment-2741619498</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#131965

Reverted due to issue reported here:
https://github.com/llvm/llvm-project/pull/131965#issuecomment-2741619498</pre>
</div>
</content>
</entry>
<entry>
<title>[clang] NFC: Clear some uses of MemberPointerType::getClass (#131965)</title>
<updated>2025-03-20T00:36:10+00:00</updated>
<author>
<name>Matheus Izvekov</name>
<email>mizvekov@gmail.com</email>
</author>
<published>2025-03-20T00:36:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=fd7be0d2e9e2cb7d43c9cb97edbb36da59a5b595'/>
<id>fd7be0d2e9e2cb7d43c9cb97edbb36da59a5b595</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[MS][clang] Add support for vector deleting destructors (#126240)"</title>
<updated>2025-03-12T15:26:00+00:00</updated>
<author>
<name>Hans Wennborg</name>
<email>hans@chromium.org</email>
</author>
<published>2025-03-12T15:18:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e11ede5e90ee193dde179fe1a9ac9af718ede3db'/>
<id>e11ede5e90ee193dde179fe1a9ac9af718ede3db</id>
<content type='text'>
This caused link errors when building with sancov. See comment on the PR.

&gt; Whereas it is UB in terms of the standard to delete an array of objects
&gt; via pointer whose static type doesn't match its dynamic type, MSVC
&gt; supports an extension allowing to do it.
&gt; Aside from array deletion not working correctly in the mentioned case,
&gt; currently not having this extension implemented causes clang to generate
&gt; code that is not compatible with the code generated by MSVC, because
&gt; clang always puts scalar deleting destructor to the vftable. This PR
&gt; aims to resolve these problems.
&gt;
&gt; Fixes https://github.com/llvm/llvm-project/issues/19772

This reverts commit d6942d54f677000cf713d2b0eba57b641452beb4.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This caused link errors when building with sancov. See comment on the PR.

&gt; Whereas it is UB in terms of the standard to delete an array of objects
&gt; via pointer whose static type doesn't match its dynamic type, MSVC
&gt; supports an extension allowing to do it.
&gt; Aside from array deletion not working correctly in the mentioned case,
&gt; currently not having this extension implemented causes clang to generate
&gt; code that is not compatible with the code generated by MSVC, because
&gt; clang always puts scalar deleting destructor to the vftable. This PR
&gt; aims to resolve these problems.
&gt;
&gt; Fixes https://github.com/llvm/llvm-project/issues/19772

This reverts commit d6942d54f677000cf713d2b0eba57b641452beb4.
</pre>
</div>
</content>
</entry>
<entry>
<title>[MS][clang] Add support for vector deleting destructors (#126240)</title>
<updated>2025-03-04T08:17:50+00:00</updated>
<author>
<name>Mariya Podchishchaeva</name>
<email>mariya.podchishchaeva@intel.com</email>
</author>
<published>2025-03-04T08:17:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=d6942d54f677000cf713d2b0eba57b641452beb4'/>
<id>d6942d54f677000cf713d2b0eba57b641452beb4</id>
<content type='text'>
Whereas it is UB in terms of the standard to delete an array of objects
via pointer whose static type doesn't match its dynamic type, MSVC
supports an extension allowing to do it.
Aside from array deletion not working correctly in the mentioned case,
currently not having this extension implemented causes clang to generate
code that is not compatible with the code generated by MSVC, because
clang always puts scalar deleting destructor to the vftable. This PR
aims to resolve these problems.

Fixes https://github.com/llvm/llvm-project/issues/19772</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Whereas it is UB in terms of the standard to delete an array of objects
via pointer whose static type doesn't match its dynamic type, MSVC
supports an extension allowing to do it.
Aside from array deletion not working correctly in the mentioned case,
currently not having this extension implemented causes clang to generate
code that is not compatible with the code generated by MSVC, because
clang always puts scalar deleting destructor to the vftable. This PR
aims to resolve these problems.

Fixes https://github.com/llvm/llvm-project/issues/19772</pre>
</div>
</content>
</entry>
</feed>
