]> granicus.if.org Git - clang/commit
Exploit this-return of a callsite in a this-return function.
authorManman Ren <mren@apple.com>
Wed, 20 Mar 2013 16:59:38 +0000 (16:59 +0000)
committerManman Ren <mren@apple.com>
Wed, 20 Mar 2013 16:59:38 +0000 (16:59 +0000)
commit63fd408a61ae9b94e8d8a986832f526f7cdbfa84
treeb69fb6c25f54302cff940596a27db5ebbadea3b9
parent54a38bd5cf243310290f34b43fc940a498a00f90
Exploit this-return of a callsite in a this-return function.

For constructors/desctructors that return 'this', if there exists a callsite
that returns 'this' and is immediately before the return instruction, make
sure we are using the return value from the callsite.

We don't need to keep 'this' alive through the callsite. It also enables
optimizations in the backend, such as tail call optimization.

Updated from r177211.
rdar://12818789

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177541 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGCXXABI.h
lib/CodeGen/CGCall.cpp
lib/CodeGen/CGClass.cpp
lib/CodeGen/CodeGenFunction.cpp
lib/CodeGen/CodeGenFunction.h
lib/CodeGen/ItaniumCXXABI.cpp
lib/CodeGen/MicrosoftCXXABI.cpp
test/CodeGenCXX/arm.cpp
test/CodeGenCXX/constructor-destructor-return-this.cpp [new file with mode: 0644]