1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -triple=i386-pc-win32 %s -o - | FileCheck %s 2*67e74705SXin Li struct A {}; 3*67e74705SXin Li struct B : A {}; 4*67e74705SXin Li extern "C" { 5*67e74705SXin Li extern int B::*a; test1()6*67e74705SXin Livoid test1() { (int A::*)(a); } 7*67e74705SXin Li } 8*67e74705SXin Li // CHECK-LABEL: define void @test1( 9*67e74705SXin Li // CHECK: %[[load:.*]] = load i32, i32* @a 10*67e74705SXin Li // CHECK: %[[memptr_cmp:.*]] = icmp ne i32 %[[load]], -1 11*67e74705SXin Li // CHECK: br i1 %[[memptr_cmp]] 12*67e74705SXin Li 13*67e74705SXin Li // CHECK: %[[adj:.*]] = sub nsw i32 %[[load]], 0 14*67e74705SXin Li // CHECK: %[[nv_adj:.*]] = select i1 true, i32 %[[adj]], i32 0 15*67e74705SXin Li 16*67e74705SXin Li // CHECK: %[[memptr_converted:.*]] = phi i32 [ -1, {{.*}} ], [ %[[nv_adj]], {{.*}} ] 17