1*de9b0ddeSStephen Tozer // RUN: %clang_cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm -fextend-variable-liveness -o - | FileCheck %s --implicit-check-not=llvm.fake.use 24424c44cSWolfgang Pieb // Check that fake use calls are emitted at the correct locations, i.e. 34424c44cSWolfgang Pieb // at the end of lexical blocks and at the end of the function. 44424c44cSWolfgang Pieb 54424c44cSWolfgang Pieb int glob_i; 64424c44cSWolfgang Pieb char glob_c; 74424c44cSWolfgang Pieb float glob_f; 84424c44cSWolfgang Pieb 94424c44cSWolfgang Pieb int foo(int i) { 104424c44cSWolfgang Pieb // CHECK-LABEL: define{{.*}}foo 114424c44cSWolfgang Pieb if (i < 4) { 124424c44cSWolfgang Pieb char j = i * 3; 134424c44cSWolfgang Pieb if (glob_i > 3) { 144424c44cSWolfgang Pieb float f = glob_f; 154424c44cSWolfgang Pieb j = f; 164424c44cSWolfgang Pieb glob_c = j; 174424c44cSWolfgang Pieb // CHECK: call void (...) @llvm.fake.use(float % 184424c44cSWolfgang Pieb // CHECK-NEXT: br label % 194424c44cSWolfgang Pieb } 204424c44cSWolfgang Pieb glob_i = j; 214424c44cSWolfgang Pieb // CHECK: call void (...) @llvm.fake.use(i8 % 224424c44cSWolfgang Pieb // CHECK-NEXT: br label % 234424c44cSWolfgang Pieb } 244424c44cSWolfgang Pieb // CHECK: call void (...) @llvm.fake.use(i32 % 254424c44cSWolfgang Pieb // CHECK-NEXT: ret 264424c44cSWolfgang Pieb return 4; 274424c44cSWolfgang Pieb } 284424c44cSWolfgang Pieb 294424c44cSWolfgang Pieb // CHECK: declare void @llvm.fake.use(...) 30