[llvm] [JITLink] Add GOT indirection optimization for SystemZ (PR #171919)
Ulrich Weigand via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 12 04:15:11 PST 2025
================
@@ -219,6 +219,24 @@ enum EdgeKind_systemz : Edge::Kind {
///
DeltaPLT32dbl,
+ /// Relaxable version of DeltaPLT32dbl.
+ ///
+ /// The edge kind has the same fixup expression as DeltaPLT32dbl,
+ /// but identifies the call/branch as being to a pointer jump stub that may be
+ /// bypassed with a direct jump to the ultimate target if the ultimate target
+ /// is within range of the fixup location.
+ ///
+ /// Fixup expression:
+ /// Fixup <- (Target - Fixup + Addend) >> 1 : int32
+ ///
+ /// Errors:
+ /// - The result of the fixup expression before shifting right by 1 must
+ /// fit into an int33, otherwise an out-of-range error will be returned.
+ /// - The result of the fixup expression before shifting right by 1 must
+ /// be multiple of 2, otherwise an alignment error will be returned.
+ ///
+ Delta32dblToPtrJumpStubBypassable,
----------------
uweigand wrote:
Why do we need this extra type? Isn't *every* `DeltaPLT32dbl` bypassable?
https://github.com/llvm/llvm-project/pull/171919
More information about the llvm-commits
mailing list