xref: /llvm-project/clang/test/CodeGen/fake-use-determinism.c (revision de9b0ddedc43302117b15518ca21f3341cf6b5ff)
1*de9b0ddeSStephen Tozer // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -fextend-variable-liveness %s -o - | FileCheck %s
24424c44cSWolfgang Pieb //
34424c44cSWolfgang Pieb // We are checking that the fake.use calls for i, j and k appear
44424c44cSWolfgang Pieb // in a particular order. It is not the order itself that is important
54424c44cSWolfgang Pieb // but that it remains the same between different test runs.
64424c44cSWolfgang Pieb 
74424c44cSWolfgang Pieb // CHECK:      [[K_FAKE_USE:%[a-zA-Z0-9\.]+]] = load i32, ptr %k.addr
84424c44cSWolfgang Pieb // CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[K_FAKE_USE]]) #2
94424c44cSWolfgang Pieb // CHECK-NEXT: [[J_FAKE_USE:%[a-zA-Z0-9\.]+]] = load i32, ptr %j.addr
104424c44cSWolfgang Pieb // CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[J_FAKE_USE]]) #2
114424c44cSWolfgang Pieb // CHECK-NEXT: [[I_FAKE_USE:%[a-zA-Z0-9\.]+]] = load i32, ptr %i.addr
124424c44cSWolfgang Pieb // CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[I_FAKE_USE]]) #2
134424c44cSWolfgang Pieb 
144424c44cSWolfgang Pieb void bar();
154424c44cSWolfgang Pieb void foo(int i, int j, int k)
164424c44cSWolfgang Pieb {
174424c44cSWolfgang Pieb    for (int l = 0; l < i; l++) {
184424c44cSWolfgang Pieb       bar();
194424c44cSWolfgang Pieb    }
204424c44cSWolfgang Pieb }
21