blob: 567e3f3740996d97025fb525dff58ff4f21c8431 [file] [log] [blame]
Anders Carlssonfe404562010-02-02 03:23:38 +00001// RUN: %clang_cc1 %s -emit-llvm -o - -triple=x86_64-apple-darwin10 | FileCheck %s
Eli Friedman9b372742009-11-27 04:56:40 +00002
3struct A { int a; };
4struct B { int b; };
5struct C : B, A { };
6
Anders Carlssonfe404562010-02-02 03:23:38 +00007// Casts.
8namespace Casts {
9
Eli Friedman9b372742009-11-27 04:56:40 +000010int A::*pa;
11int C::*pc;
12
13void f() {
Anders Carlssonfe404562010-02-02 03:23:38 +000014 // CHECK: store i64 -1, i64* @_ZN5Casts2paE
Eli Friedman9b372742009-11-27 04:56:40 +000015 pa = 0;
16
17 // CHECK: [[ADJ:%[a-zA-Z0-9\.]+]] = add i64 {{.*}}, 4
Anders Carlssonfe404562010-02-02 03:23:38 +000018 // CHECK: store i64 [[ADJ]], i64* @_ZN5Casts2pcE
Eli Friedman9b372742009-11-27 04:56:40 +000019 pc = pa;
20
21 // CHECK: [[ADJ:%[a-zA-Z0-9\.]+]] = sub i64 {{.*}}, 4
Anders Carlssonfe404562010-02-02 03:23:38 +000022 // CHECK: store i64 [[ADJ]], i64* @_ZN5Casts2paE
Eli Friedman9b372742009-11-27 04:56:40 +000023 pa = static_cast<int A::*>(pc);
24}
Anders Carlssonfe404562010-02-02 03:23:38 +000025
26}