llvm-project/clang/test/CodeGen/fake-use-determinism.c
Matt Arsenault 6f44be97d0
IR: Make llvm.fake.use a DefaultAttrsIntrinsic (#131743)
This shouldn't be special and is just an ordinary sideeffect.
2025-03-19 08:29:04 +07:00

21 lines
820 B
C

// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -fextend-variable-liveness %s -o - | FileCheck %s
//
// We are checking that the fake.use calls for i, j and k appear
// in a particular order. It is not the order itself that is important
// but that it remains the same between different test runs.
// CHECK: [[K_FAKE_USE:%[a-zA-Z0-9\.]+]] = load i32, ptr %k.addr
// CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[K_FAKE_USE]])
// CHECK-NEXT: [[J_FAKE_USE:%[a-zA-Z0-9\.]+]] = load i32, ptr %j.addr
// CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[J_FAKE_USE]])
// CHECK-NEXT: [[I_FAKE_USE:%[a-zA-Z0-9\.]+]] = load i32, ptr %i.addr
// CHECK-NEXT: call void (...) @llvm.fake.use(i32 [[I_FAKE_USE]])
void bar();
void foo(int i, int j, int k)
{
for (int l = 0; l < i; l++) {
bar();
}
}