[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