Lines Matching defs:Right
7 struct Right {
8 virtual void right();
11 struct ChildNoOverride : Left, Right {
14 struct ChildOverride : Left, Right {
16 virtual void right();
68 child->right();
69 // When calling a right base's virtual method, one needs to adjust 'this' at
74 // CHECK: %[[RIGHT:.*]] = bitcast i8* %[[RIGHT_i8]] to %struct.Right*
76 // CHECK: %[[VFPTR:.*]] = bitcast %struct.Right* %[[RIGHT]] to void (%struct.Right*)***
77 // CHECK: %[[VFTABLE:.*]] = load void (%struct.Right*)*** %[[VFPTR]]
78 // CHECK: %[[VFUN:.*]] = getelementptr inbounds void (%struct.Right*)** %[[VFTABLE]], i64 0
79 // CHECK: %[[VFUN_VALUE:.*]] = load void (%struct.Right*)** %[[VFUN]]
80 // CHECK: call x86_thiscallcc void %[[VFUN_VALUE]](%struct.Right* %[[RIGHT]])
84 void ChildOverride::right() {
85 // CHECK: define x86_thiscallcc void @"\01?right@ChildOverride@@UAEXXZ"(i8*
87 // ChildOverride::right gets 'this' cast to Right* in ECX (i.e. this+4) so we
106 child->right();
107 // When calling a right child's virtual method, one needs to adjust 'this' at
119 // CHECK: %[[RIGHT:.*]] = getelementptr inbounds i8* %[[CHILD_i8]], i32 4
121 // CHECK: call x86_thiscallcc void %[[VFUN_VALUE]](i8* %[[RIGHT]])
126 virtual void right();
129 void GrandchildOverride::right() {
130 // CHECK: define x86_thiscallcc void @"\01?right@GrandchildOverride@@UAEXXZ"(i8*
146 obj->right();
156 Right r;
157 // CHECK: define {{.*}} @"\01??0Right@@QAE@XZ"
190 struct AsymmetricChild : LeftWithNonVirtualDtor, Right {