@@ -160,6 +160,34 @@ define i64 @test_ptrauth_resign_ptrauth_constant(ptr %p) {
160160 ret i64 %authed
161161}
162162
163+ @ds = external global i8
164+
165+ define i64 @test_ptrauth_nop_ds1 (ptr %p ) {
166+ ; CHECK-LABEL: @test_ptrauth_nop_ds1(
167+ ; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[P:%.*]] to i64
168+ ; CHECK-NEXT: [[SIGNED:%.*]] = call i64 @llvm.ptrauth.sign(i64 [[TMP0]], i32 1, i64 1234) [ "deactivation-symbol"(ptr @ds) ]
169+ ; CHECK-NEXT: [[AUTHED:%.*]] = call i64 @llvm.ptrauth.auth(i64 [[SIGNED]], i32 1, i64 1234)
170+ ; CHECK-NEXT: ret i64 [[AUTHED]]
171+ ;
172+ %tmp0 = ptrtoint ptr %p to i64
173+ %signed = call i64 @llvm.ptrauth.sign (i64 %tmp0 , i32 1 , i64 1234 ) [ "deactivation-symbol" (ptr @ds ) ]
174+ %authed = call i64 @llvm.ptrauth.auth (i64 %signed , i32 1 , i64 1234 )
175+ ret i64 %authed
176+ }
177+
178+ define i64 @test_ptrauth_nop_ds2 (ptr %p ) {
179+ ; CHECK-LABEL: @test_ptrauth_nop_ds2(
180+ ; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[P:%.*]] to i64
181+ ; CHECK-NEXT: [[SIGNED:%.*]] = call i64 @llvm.ptrauth.sign(i64 [[TMP0]], i32 1, i64 1234)
182+ ; CHECK-NEXT: [[AUTHED:%.*]] = call i64 @llvm.ptrauth.auth(i64 [[SIGNED]], i32 1, i64 1234) [ "deactivation-symbol"(ptr @ds) ]
183+ ; CHECK-NEXT: ret i64 [[AUTHED]]
184+ ;
185+ %tmp0 = ptrtoint ptr %p to i64
186+ %signed = call i64 @llvm.ptrauth.sign (i64 %tmp0 , i32 1 , i64 1234 )
187+ %authed = call i64 @llvm.ptrauth.auth (i64 %signed , i32 1 , i64 1234 ) [ "deactivation-symbol" (ptr @ds ) ]
188+ ret i64 %authed
189+ }
190+
163191declare i64 @llvm.ptrauth.auth (i64 , i32 , i64 )
164192declare i64 @llvm.ptrauth.sign (i64 , i32 , i64 )
165193declare i64 @llvm.ptrauth.resign (i64 , i32 , i64 , i32 , i64 )
0 commit comments