diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-10-12 19:51:33 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-10-12 19:51:33 +0000 |
| commit | 2a01709204bc6c27fdf22bda7d3e578b908a9b86 (patch) | |
| tree | 6ac0f191bc9177ce3cf894401ed464457dfbb8ff /clang/lib/CodeGen | |
| parent | b61301f353d7a1f7f3c0f3801185163d03528f0e (diff) | |
| download | bcm5719-llvm-2a01709204bc6c27fdf22bda7d3e578b908a9b86.tar.gz bcm5719-llvm-2a01709204bc6c27fdf22bda7d3e578b908a9b86.zip | |
More devirtualization improvements.
llvm-svn: 83883
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGCXX.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGCXX.cpp b/clang/lib/CodeGen/CGCXX.cpp index ed7ee4298cc..f19067941e7 100644 --- a/clang/lib/CodeGen/CGCXX.cpp +++ b/clang/lib/CodeGen/CGCXX.cpp @@ -214,6 +214,10 @@ static bool canDevirtualizeMemberFunctionCalls(const Expr *Base) { if (isa<CXXTemporaryObjectExpr>(Base)) return true; + // Check if this is a call expr that returns a record type. + if (const CallExpr *CE = dyn_cast<CallExpr>(Base)) + return CE->getCallReturnType()->isRecordType(); + // We can't devirtualize the call. return false; } |

