================
@@ -150,8 +150,10 @@ void AArch64BranchTargets::addBTI(MachineBasicBlock &MBB, 
bool CouldCall,
        ++MBBI)
     ;
 
-  // SCTLR_EL1.BT[01] is set to 0 by default which means
-  // PACI[AB]SP are implicitly BTI C so no BTI C instruction is needed there.
+  // PACI[AB]SP are compatible with BTI c, independently of SCTLR_EL1.BT[01].
+  // If SCTLR_EL1.BT[01] is set to 1, they are compatible with BTI jc, but we
+  // cannot rely on that it compile time. Therefore, we can only skip adding a
+  // BTI c for these.
----------------
peterwaller-arm wrote:

I found this comment hard to parse - suggested some alternate language here.

> `PACI[AB]SP` are implicitly `BTI c` so insertion of a BTI can be skipped in 
> that case.
> However, depending on the runtime variable `SCTLR_EL1.BT[01]`, they are not 
> equivalent to a `BTI jc`, which still requires an additional BTI.


https://github.com/llvm/llvm-project/pull/167306
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to