Anders Carlsson | fe40456 | 2010-02-02 03:23:38 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-darwin10 | FileCheck %s |
Eli Friedman | 9b37274 | 2009-11-27 04:56:40 +0000 | [diff] [blame] | 2 | |
| 3 | struct A { int a; }; |
| 4 | struct B { int b; }; |
| 5 | struct C : B, A { }; |
| 6 | |
Anders Carlsson | fe40456 | 2010-02-02 03:23:38 +0000 | [diff] [blame^] | 7 | // Casts. |
| 8 | namespace Casts { |
| 9 | |
Eli Friedman | 9b37274 | 2009-11-27 04:56:40 +0000 | [diff] [blame] | 10 | int A::*pa; |
| 11 | int C::*pc; |
| 12 | |
| 13 | void f() { |
Anders Carlsson | fe40456 | 2010-02-02 03:23:38 +0000 | [diff] [blame^] | 14 | // CHECK: store i64 -1, i64* @_ZN5Casts2paE |
Eli Friedman | 9b37274 | 2009-11-27 04:56:40 +0000 | [diff] [blame] | 15 | pa = 0; |
| 16 | |
| 17 | // CHECK: [[ADJ:%[a-zA-Z0-9\.]+]] = add i64 {{.*}}, 4 |
Anders Carlsson | fe40456 | 2010-02-02 03:23:38 +0000 | [diff] [blame^] | 18 | // CHECK: store i64 [[ADJ]], i64* @_ZN5Casts2pcE |
Eli Friedman | 9b37274 | 2009-11-27 04:56:40 +0000 | [diff] [blame] | 19 | pc = pa; |
| 20 | |
| 21 | // CHECK: [[ADJ:%[a-zA-Z0-9\.]+]] = sub i64 {{.*}}, 4 |
Anders Carlsson | fe40456 | 2010-02-02 03:23:38 +0000 | [diff] [blame^] | 22 | // CHECK: store i64 [[ADJ]], i64* @_ZN5Casts2paE |
Eli Friedman | 9b37274 | 2009-11-27 04:56:40 +0000 | [diff] [blame] | 23 | pa = static_cast<int A::*>(pc); |
| 24 | } |
Anders Carlsson | fe40456 | 2010-02-02 03:23:38 +0000 | [diff] [blame^] | 25 | |
| 26 | } |