commit | ac45293276030400195133225d54ddcb3644ea20 | [log] [tgz] |
---|---|---|
author | Richard Smith <richard-llvm@metafoo.co.uk> | Wed Aug 15 22:59:28 2012 +0000 |
committer | Richard Smith <richard-llvm@metafoo.co.uk> | Wed Aug 15 22:59:28 2012 +0000 |
tree | 0f714afc99697a3995afd23fcf881934728f0a12 | |
parent | 95526a480f252514d63a00bb032a2cb205dbf021 [diff] [blame] |
Devirtualize calls on glvalues produced by class member access expressions. Based on a patch by Yin Ma! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161998 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp b/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp index c5a4094..7ef4864 100644 --- a/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp +++ b/test/CodeGenCXX/devirtualize-virtual-function-calls.cpp
@@ -83,3 +83,20 @@ 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(); + } +}