[PATCH] Detect deallocation calls even if the deallocation function has a definition
Richard Smith
richard at metafoo.co.uk
Wed Jan 14 17:02:04 PST 2015
On Mon, Dec 15, 2014 at 5:01 PM, Philip Reames <listmail at philipreames.com>
wrote:
>
> On 12/04/2014 04:11 PM, Richard Smith wrote:
>
> When Clang emits a call to a C++14 sized deallocation function, it emits a
> weak definition of that function in case the underlying C++ ABI library
> doesn't provide it:
>
> call _ZdlPvm(i8* %p, i64 8) builtin
>
> // ...
>
> define linkonce void @_ZdlPvm(i8* %p, i64) nobuiltin {
> call void @_ZdlPvm(i8* %p)
> ret void
> }
>
> However, LLVM's detection of deallocation functions is broken by this:
> it assumes that if we have a definition of the deallocation function, then
> it's not really a deallocation function. I'm not sure why this is the case.
> The check was added in response to this review comment:
>
>
> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20091102/090282.html
>
> The attached patch removes this condition (and thus avoids the
> optimization regression in C++14 mode), but I'm wary about removing a check
> that I don't understand, so I was wondering if anyone knew the
> justification for having this test?
>
> Reading over the review comment, the point of the comment in question was
> how to do the comparison of the call's target against the free function. I
> suspect the declaration check was accidental.
>
Me too, thanks. Committed as r226069.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150114/5d8f4fcd/attachment.html>
More information about the llvm-commits
mailing list