]> granicus.if.org Git - clang/commit
Exploit this-return of a callsite in a this-return function.
authorManman Ren <mren@apple.com>
Sat, 16 Mar 2013 00:11:09 +0000 (00:11 +0000)
committerManman Ren <mren@apple.com>
Sat, 16 Mar 2013 00:11:09 +0000 (00:11 +0000)
commit2710ed8fd997be04ff447b8be2190f8fb34ac22b
treee16b3753c587ffff6ffeda2e04f35851de6f2d53
parent70e82dc7a254054f0de491493489da162e63c364
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.

rdar://12818789

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177211 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