Issue |
156947
|
Summary |
The intrinsic @llvm.ptrauth.resign.load.relative is not recognized by a mainstream llvm, while it is recognized by Xcode 26's clang
|
Labels |
clang
|
Assignees |
|
Reporter |
gitevedev
|
Consider the following IR:
```
declare i64 @llvm.ptrauth.resign.load.relative(i64, i32 immarg, i64, i32 immarg, i64, i64 immarg)
define i64 @test_resign(i64 %ptr) {
entry:
; Just call the intrinsic with some dummy arguments
%res = call i64 @llvm.ptrauth.resign.load.relative(
i64 %ptr,
i32 0,
i64 42,
i32 0,
i64 42,
i64 0
)
ret i64 %res
}
```
When it is compiled using Xcode 26.0's clang
`clang -S -target arm64e-apple-macosx26.0 test.ll -o test.s`
I am getting a correct assembly output with the pointer signing instructions:
```
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 11, 0
.globl _test_resign ; -- Begin function test_resign
.p2align 2
_test_resign: ; @test_resign
.cfi_startproc
; %bb.0: ; %entry
mov x16, x0
mov x17, #42 ; =0x2a
autia x16, x17
mov x17, x16
xpaci x17
cmp x16, x17
b.eq Lauth_success_0
mov x16, x17
b Lresign_end_0
Lauth_success_0:
ldrsw x17, [x16, #0]!
add x16, x16, x17
mov x17, #42 ; =0x2a
pacia x16, x17
Lresign_end_0:
mov x0, x16
ret
.cfi_endproc
; -- End function
.subsections_via_symbols
```
However when using mainstream llvm, the intrinsic is not recognized and considered to be a function call:
```
.section __TEXT,__text,regular,pure_instructions
.build_version macos, 26, 0
.globl _test_resign ; -- Begin function test_resign
.p2align 2
_test_resign: ; @test_resign
.cfi_startproc
; %bb.0: ; %entry
stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
.cfi_def_cfa_offset 16
.cfi_offset w30, -8
.cfi_offset w29, -16
mov w1, #0 ; =0x0
mov w2, #42 ; =0x2a
mov w3, #0 ; =0x0
mov w4, #42 ; =0x2a
mov x5, #0 ; =0x0
bl _llvm.ptrauth.resign.load.relative
ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
ret
.cfi_endproc
; -- End function
.subsections_via_symbols
```
cc @ojhunt
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs