Lines Matching defs:memptr

76 // Test memptr emission in a constant expression.
108 // Try a reinterpret_cast followed by a memptr conversion.
170 int POD::*memptr;
171 memptr = &POD::a;
172 memptr = &POD::b;
173 if (memptr)
174 memptr = 0;
177 // CHECK: %[[memptr:.*]] = alloca i32, align 4
178 // CHECK-NEXT: store i32 0, i32* %[[memptr]], align 4
179 // CHECK-NEXT: store i32 4, i32* %[[memptr]], align 4
180 // CHECK-NEXT: %[[memptr_val:.*]] = load i32* %[[memptr]], align 4
183 // CHECK: store i32 -1, i32* %[[memptr]], align 4
189 int Polymorphic::*memptr;
190 memptr = &Polymorphic::a;
191 memptr = &Polymorphic::b;
192 if (memptr)
193 memptr = 0;
197 // CHECK: %[[memptr:.*]] = alloca i32, align 4
198 // CHECK-NEXT: store i32 4, i32* %[[memptr]], align 4
199 // CHECK-NEXT: store i32 8, i32* %[[memptr]], align 4
200 // CHECK-NEXT: %[[memptr_val:.*]] = load i32* %[[memptr]], align 4
203 // CHECK: store i32 0, i32* %[[memptr]], align 4
238 int loadDataMemberPointerVirtual(Virtual *o, int Virtual::*memptr) {
239 return o->*memptr;
244 // CHECK: %[[memptr:.*]] = load { i32, i32 }* %{{.*}}, align 4
245 // CHECK: %[[memptr0:.*]] = extractvalue { i32, i32 } %[[memptr:.*]], 0
246 // CHECK: %[[memptr1:.*]] = extractvalue { i32, i32 } %[[memptr:.*]], 1
262 int loadDataMemberPointerUnspecified(Unspecified *o, int Unspecified::*memptr) {
263 return o->*memptr;
268 // CHECK: %[[memptr:.*]] = load { i32, i32, i32 }* %{{.*}}, align 4
269 // CHECK: %[[memptr0:.*]] = extractvalue { i32, i32, i32 } %[[memptr:.*]], 0
270 // CHECK: %[[memptr1:.*]] = extractvalue { i32, i32, i32 } %[[memptr:.*]], 1
271 // CHECK: %[[memptr2:.*]] = extractvalue { i32, i32, i32 } %[[memptr:.*]], 2
294 void callMemberPointerSingle(Single *o, void (Single::*memptr)()) {
295 (o->*memptr)();
303 void callMemberPointerMultiple(Multiple *o, void (Multiple::*memptr)()) {
304 (o->*memptr)();
316 void callMemberPointerVirtualBase(Virtual *o, void (Virtual::*memptr)()) {
317 (o->*memptr)();
434 // memptr.convert: ; preds = %entry
439 // memptr.converted: ; preds = %memptr.convert, %entry
450 // lib/CodeGen/TargetInfo.cpp with how we classify memptr types for returns.
459 // memptr.convert: ; preds = %entry
463 // memptr.converted: ; preds = %memptr.convert, %entry
484 // memptr.convert: ; preds = %entry
494 // memptr.converted: ; preds = %memptr.convert, %entry