<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On Jun 21, 2017, at 1:53 PM, Brian Chak via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:</div><div class=""><div class="socmaildefaultfont" dir="ltr" style="font-family:Arial, Helvetica, sans-serif;font-size:10.5pt"><div class="socmaildefaultfont" dir="ltr" style="font-family:Arial, Helvetica, sans-serif;font-size:10.5pt"><div dir="ltr" class="">I'm trying to create a wrapper function that takes a pointer and essentially calls placement new on it. Is it possible to generate AST for this in Sema instead of generating llvm directly in CodeGen?</div>
<div dir="ltr" class=""> </div>
<div dir="ltr" class="">I cannot just use placement new because it is not implicitly defined and users may write their own definition of it.</div></div></div></div></blockquote><div><br class=""></div></div>Users are not allowed to override the reserved placement new function, i.e. the one that just takes a void*, and Clang will not actually call it if they try.  But you're right that it's not implicitly declared like the non-placement operator new is.<div class=""><br class=""></div><div class="">It wouldn't be completely ridiculous to allow CXXNewExpr to not contain an operator new, but you could probably also just fake one up that will satisfy isReservedGlobalPlacementOperator().  If this is destined to go in-tree, though, there might be better options.</div><div class=""><div class=""><div class=""><div class=""><br class=""></div><div class="">John.</div></div></div></div></body></html>