[LLVMdev] _Znwm is not a builtin

Richard Smith richard at metafoo.co.uk
Wed May 15 19:31:28 PDT 2013


Hi,

LLVM classifies _Znwm as a builtin by default. After some discussion, the
C++ core working group have decreed that that is not correct: calls to
"operator new" *can* be optimized, but only if they come from
new-expressions, and not if they come from explicit calls to ::operator
new. We cannot work around this in the frontend by marking the call as
'nobuiltin' for two reasons:

1) The 'nobuiltin' attribute doesn't actually prevent the optimization (see
recent patch on llvmcommits)
2) We can't block the optimization if the call happens through a function
pointer, unless we also annotate all calls through function pointers as
'nobuiltin'

How feasible would it be to make the 'builtin-ness' of _Znwm etc be opt-in
rather than opt-out? Is there some other option we could pursue?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130515/ed622357/attachment.html>


More information about the llvm-dev mailing list