seg_offset += fullpages * XLOG_BLCKSZ + bytesleft + SizeOfXLogShortPHD;
    }
 
-   XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result, wal_segment_size);
+   XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, wal_segment_size, result);
 
    return result;
 }
            seg_offset += fullpages * XLOG_BLCKSZ + bytesleft + SizeOfXLogShortPHD;
    }
 
-   XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, result, wal_segment_size);
+   XLogSegNoOffsetToRecPtr(fullsegs, seg_offset, wal_segment_size, result);
 
    return result;
 }
 
    XLByteToSeg(recptr, segno, state->wal_segment_size);
    offset = XLogSegmentOffset(recptr, state->wal_segment_size);
 
-   XLogSegNoOffsetToRecPtr(segno, offset, recaddr, state->wal_segment_size);
+   XLogSegNoOffsetToRecPtr(segno, offset, state->wal_segment_size, recaddr);
 
    if (hdr->xlp_magic != XLOG_PAGE_MAGIC)
    {
 
 {
    XLogRecPtr  recptr;
 
-   XLogSegNoOffsetToRecPtr(segno, 0, recptr, wal_segment_size);
+   XLogSegNoOffsetToRecPtr(segno, 0, wal_segment_size, recptr);
 
    snprintf(path, MAXPGPATH, "pg_replslot/%s/xid-%u-lsn-%X-%X.snap",
             NameStr(MyReplicationSlot->data.name),
 
        if (!high_ispartial)
            high_segno++;
 
-       XLogSegNoOffsetToRecPtr(high_segno, 0, high_ptr, WalSegSz);
+       XLogSegNoOffsetToRecPtr(high_segno, 0, WalSegSz, high_ptr);
 
        *tli = high_tli;
        return high_ptr;
 
     * Adjust fields as needed to force an empty XLOG starting at
     * newXlogSegNo.
     */
-   XLogSegNoOffsetToRecPtr(newXlogSegNo, SizeOfXLogLongPHD,
-                           ControlFile.checkPointCopy.redo, WalSegSz);
+   XLogSegNoOffsetToRecPtr(newXlogSegNo, SizeOfXLogLongPHD, WalSegSz,
+                           ControlFile.checkPointCopy.redo);
    ControlFile.checkPointCopy.time = (pg_time_t) time(NULL);
 
    ControlFile.state = DB_SHUTDOWNED;
 
    XLogSegNo   targetSegNo;
 
    XLByteToSeg(targetPagePtr, targetSegNo, WalSegSz);
-   XLogSegNoOffsetToRecPtr(targetSegNo + 1, 0, targetSegEnd, WalSegSz);
+   XLogSegNoOffsetToRecPtr(targetSegNo + 1, 0, WalSegSz, targetSegEnd);
    targetPageOff = XLogSegmentOffset(targetPagePtr, WalSegSz);
 
    /*
 
        XLogFromFileName(fname, &private.timeline, &segno, WalSegSz);
 
        if (XLogRecPtrIsInvalid(private.startptr))
-           XLogSegNoOffsetToRecPtr(segno, 0, private.startptr, WalSegSz);
+           XLogSegNoOffsetToRecPtr(segno, 0, WalSegSz, private.startptr);
        else if (!XLByteInSeg(private.startptr, segno, WalSegSz))
        {
            fprintf(stderr,
 
        /* no second file specified, set end position */
        if (!(optind + 1 < argc) && XLogRecPtrIsInvalid(private.endptr))
-           XLogSegNoOffsetToRecPtr(segno + 1, 0, private.endptr, WalSegSz);
+           XLogSegNoOffsetToRecPtr(segno + 1, 0, WalSegSz, private.endptr);
 
        /* parse ENDSEG if passed */
        if (optind + 1 < argc)
                            argv[optind + 1], argv[optind]);
 
            if (XLogRecPtrIsInvalid(private.endptr))
-               XLogSegNoOffsetToRecPtr(endsegno + 1, 0, private.endptr,
-                                       WalSegSz);
+               XLogSegNoOffsetToRecPtr(endsegno + 1, 0, WalSegSz,
+                                       private.endptr);
 
            /* set segno to endsegno for check of --end */
            segno = endsegno;
 
 #define XLogSegmentsPerXLogId(wal_segsz_bytes) \
    (UINT64CONST(0x100000000) / (wal_segsz_bytes))
 
-#define XLogSegNoOffsetToRecPtr(segno, offset, dest, wal_segsz_bytes) \
+#define XLogSegNoOffsetToRecPtr(segno, offset, wal_segsz_bytes, dest) \
        (dest) = (segno) * (wal_segsz_bytes) + (offset)
 
 #define XLogSegmentOffset(xlogptr, wal_segsz_bytes)    \