Skip to content

Commit 545be4e

Browse files
committed
[FIXME][clang][AArch64][PAC] Fix ptrauth-struct-attr CXX and ObjC tests
The CodeGenCXX/ptrauth-struct-attr.cpp and CodeGenObjC/ptrauth-struct-attr.m had failures related to two things: - Order of operations: if we need to apply op X to both var A and B, and both X(A);X(B) and X(B);X(A) are correct, tests fails when an actual order does not match the reference order even though both ones are correct. FIXME: Why do we see such non-deterministic behavior? - Some substitution variables for FileCheck were not correct: they were not defined in failing test cases, and definitions from previous test cases were used.
1 parent 36bdf97 commit 545be4e

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

clang/test/CodeGenCXX/ptrauth-struct-attr.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,13 +370,13 @@ void test_assignment1() {
370370
// CHECK: %[[B_ADDR:.*]] = alloca ptr, align 8
371371
// CHECK: %[[V0:.*]] = load ptr, ptr %[[B_ADDR]], align 8
372372
// CHECK: %[[V1:.*]] = load ptr, ptr %[[A_ADDR]], align 8
373-
// CHECK: %[[V4:.*]] = ptrtoint ptr %[[V2]] to i64
374-
// CHECK: %[[V5:.*]] = call i64 @llvm.ptrauth.auth(i64 %[[V4]], i32 1, i64 104)
375-
// CHECK: %[[V6:.*]] = inttoptr i64 %[[V5]] to ptr
376-
// CHECK: %[[V7:.*]] = ptrtoint ptr %[[V0]] to i64
373+
// CHECK: %[[V3:.*]] = ptrtoint ptr %[[V2:.*]] to i64
374+
// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.auth(i64 %[[V3]], i32 1, i64 104)
375+
// CHECK: %[[V5:.*]] = inttoptr i64 %[[V4]] to ptr
376+
// CHECK: %[[V7:.*]] = ptrtoint ptr %[[V6:.*]] to i64
377377
// CHECK: %[[V8:.*]] = call i64 @llvm.ptrauth.auth(i64 %[[V7]], i32 1, i64 104)
378378
// CHECK: %[[V9:.*]] = inttoptr i64 %[[V8]] to ptr
379-
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[V6]], ptr align 4 %[[V9]], i64 8, i1 false)
379+
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[V10:.*]], ptr align 4 %[[V12:.*]], i64 8, i1 false)
380380

381381
void test_assignment2(S4 *a, S4 *b) {
382382
*a = *b;

clang/test/CodeGenObjC/ptrauth-struct-attr.m

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,13 +226,13 @@ int test_pointer_arithmetic0(S0 *a) {
226226
// CHECK: %[[A1_ADDR:.*]] = alloca ptr, align 8
227227
// CHECK: %[[V0:.*]] = load ptr, ptr %[[A0_ADDR]], align 8
228228
// CHECK: %[[V1:.*]] = load ptr, ptr %[[A1_ADDR]], align 8
229-
// CHECK: %[[V4:.*]] = ptrtoint ptr %[[V0]] to i64
230-
// CHECK: %[[V5:.*]] = call i64 @llvm.ptrauth.auth(i64 %[[V4]], i32 1, i64 100)
231-
// CHECK: %[[V6:.*]] = inttoptr i64 %[[V5]] to ptr
232-
// CHECK: %[[V7:.*]] = ptrtoint ptr %[[V1]] to i64
229+
// CHECK: %[[V3:.*]] = ptrtoint ptr %[[V2:.*]] to i64
230+
// CHECK: %[[V4:.*]] = call i64 @llvm.ptrauth.auth(i64 %[[V3]], i32 1, i64 100)
231+
// CHECK: %[[V5:.*]] = inttoptr i64 %[[V4]] to ptr
232+
// CHECK: %[[V7:.*]] = ptrtoint ptr %[[V6:.*]] to i64
233233
// CHECK: %[[V8:.*]] = call i64 @llvm.ptrauth.auth(i64 %[[V7]], i32 1, i64 100)
234234
// CHECK: %[[V9:.*]] = inttoptr i64 %[[V8]] to ptr
235-
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[V6]], ptr align 4 %[[V9]], i64 8, i1 false)
235+
// CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %[[V10:.*]], ptr align 4 %[[V11:.*]], i64 8, i1 false)
236236

237237
void test_dereference0(S0 *a0, S0 *a1) {
238238
*a0 = *a1;

0 commit comments

Comments
 (0)