[LLVMbugs] [Bug 11757] New: Missed copy elision when using operator new
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Jan 13 04:03:35 PST 2012
http://llvm.org/bugs/show_bug.cgi?id=11757
Bug #: 11757
Summary: Missed copy elision when using operator new
Product: clang
Version: 2.9
Platform: PC
OS/Version: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: C++
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: Mozza314 at gmail.com
CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
Classification: Unclassified
It seems clang misses the copy elision when an rvalue of some class is used for
copy construction through operator new.
This is demonstrated by the assertion failure of the following code:
#include <cassert>
#include <new>
class CopyCounter
{
private:
static int mCount;
public:
CopyCounter() { }
CopyCounter(const CopyCounter&) { ++mCount; }
static int Get() { return mCount; }
};
int CopyCounter::mCount = 0;
int main()
{
CopyCounter* f = new CopyCounter(CopyCounter());
assert(CopyCounter::Get() == 0);
delete f;
return 0;
}
I have tested this on 2.9 but I expect trunk is also affected because of a
similar problem reported to me by someone using a relatively recent checkout of
trunk.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list