diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-08-15 22:59:28 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-08-15 22:59:28 +0000 |
commit | 48c15319f7db4349c8da663145a223db915a7452 (patch) | |
tree | 34236ca9f86cc348ba3ad024ce85fb0c1ac33fa2 /clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp | |
parent | 19c722d61df804a31aa093cff3ebf89ce9c9c0da (diff) | |
download | bcm5719-llvm-48c15319f7db4349c8da663145a223db915a7452.tar.gz bcm5719-llvm-48c15319f7db4349c8da663145a223db915a7452.zip |
Devirtualize calls on glvalues produced by class member access expressions.
Based on a patch by Yin Ma!
llvm-svn: 161998
Diffstat (limited to 'clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp b/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp index c5a4094a53c..7ef4864c836 100644 --- a/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp +++ b/clang/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp @@ -83,3 +83,20 @@ namespace test3 { d.B::~B(); } } + +namespace test4 { + struct Animal { + virtual void eat(); + }; + struct Fish : Animal { + virtual void eat(); + }; + struct Wrapper { + Fish fish; + }; + extern Wrapper *p; + void test() { + // CHECK: call void @_ZN5test44Fish3eatEv + p->fish.eat(); + } +} |