diff options
author | Anders Carlsson <andersca@mac.com> | 2011-04-10 18:20:53 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2011-04-10 18:20:53 +0000 |
commit | cd0b32e73a66a20a8dab7a7f0ce963dc669f7c0a (patch) | |
tree | 0460db11e326216c85839a35be0c294452865a5e /test/CodeGenCXX/devirtualize-virtual-function-calls.cpp | |
parent | b8bced0b75fa4188c91753d5a1de6d164af45450 (diff) |
Strip off parens and no-op casts when deciding if an expr can be devirtualized. Fixes the second half of PR9660.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129253 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/devirtualize-virtual-function-calls.cpp')
-rw-r--r-- | test/CodeGenCXX/devirtualize-virtual-function-calls.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp b/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp index 74795b5dfb..5eede66cd7 100644 --- a/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp +++ b/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp @@ -2,7 +2,8 @@ struct A { virtual void f(); - + virtual void f_const() const; + A h(); }; @@ -28,6 +29,12 @@ void f(A a, A *ap, A& ar) { // CHECK: call void @_ZN1A1fEv a.h().f(); + + // CHECK: call void @_ZNK1A7f_constEv + a.f_const(); + + // CHECK: call void @_ZN1A1fEv + (a).f(); } struct B { @@ -45,3 +52,4 @@ void f() { // CHECK: call void @_ZN1B1fEv B().h().f(); } + |