| // RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm -fextend-variable-liveness=this -o - | FileCheck %s --implicit-check-not=fake.use | 
 | // Check that we generate a fake_use call with the 'this' pointer as argument, | 
 | // and no other fake uses. | 
 | // The call should appear after the call to bar(). | 
 |  | 
 | void bar(); | 
 |  | 
 | class C | 
 | { | 
 | public: | 
 |     bool test(int p); | 
 |     C(int v): v(v) {} | 
 |  | 
 | private: | 
 |     int v; | 
 | }; | 
 |  | 
 | bool C::test(int p) | 
 | { | 
 | // CHECK-LABEL: define{{.*}}_ZN1C4testEi(ptr{{[^,]*}} %this, i32{{.*}} %p) | 
 | // CHECK:   %this.addr = alloca ptr | 
 | // CHECK:   store ptr %this, ptr %this.addr | 
 |     int res = p - v; | 
 |  | 
 |     bar(); | 
 | // CHECK: call{{.*}}bar | 
 |  | 
 |     return res != 0; | 
 | // CHECK:      [[FAKE_USE:%.+]] = load ptr, ptr %this.addr | 
 | // CHECK-NEXT: call void (...) @llvm.fake.use(ptr{{.*}} [[FAKE_USE]]) | 
 | // CHECK-NEXT: ret | 
 | } | 
 |  | 
 | // CHECK: declare void @llvm.fake.use |