1. 17 Oct, 2021 4 commits
    • Michael Van Canneyt's avatar
    • FPK's avatar
      * patch by Sergey Larin: Reducing and aligning the size of TAnsiRec,... · ee10850a
      FPK authored
        * patch by Sergey Larin: Reducing and aligning the size of TAnsiRec, TUnicodeRec for CPU64, resolves #38018:
          For CPU64, the size of record TAnsiRec and TUnicodeRec is 16 bytes instead of 24.
          Which is very good also because of the alignment. when allocating memory, the address
          of the first character of the string will be aligned on the 16-byte boundary.
          At the same time, the useless Dummy field, which is needed in CPU64 for exactly alignment, has been removed.
          For CPU32 (and CPU16), the record size has not changed, so procedures such as
          fpc_AnsiStr_Decr_Ref, implemented in assembler (see i386, arm), remained working correctly.
        * tests adapted
      ee10850a
    • FPK's avatar
      * manually merged merge request 69 by J. Gareth "Kit" Moreton: · ea6529ff
      FPK authored
          x86: CMP/MOV refactoring and expansion
            This merge request refactors the SwapMovCmp routine, and calls to it, to be more self-contained,
            having the preliminary checks built-in to ensure that moving the MOV instruction is
            actually a sound idea, while also making it more general-purpose so it can handle instructions
            that are not MOV operations. This feature is primarily for future expansion,
            but also cleans up the code for the x86 peephole optimizer.
      ea6529ff
    • FPK's avatar
      * merge request 75 by J. Gareth "Kit" Moreton manually applied: · 4012c3db
      FPK authored
          This merge request makes a number of improvements to the DeepMOVOpt method and supporting functions:
      
            * ReplaceRegisterInInstruction now replaces registers in references that are written to
              (since the registers themselves won't change)
            * RegModifiedByInstruction will no longer return True for a register that appears in a reference
              that's written to (for the same reason as above) - special operations like MOVSS
              (the 0-operand version) aren't affected.
            * DeepMOVOpt returning True will now always set the Result of OptPass1MOV to True even though p
              wasn't directly modified, since this often caused missed optimisations.
            * Some of the speed-ups in the patch from #32916 have also been applied in order to make
              the general DeepMOVOpt run faster, notably it tries to avoid calling UpdateUsedRegs where possible.
      4012c3db
  2. 16 Oct, 2021 3 commits
  3. 15 Oct, 2021 2 commits
  4. 14 Oct, 2021 7 commits
  5. 13 Oct, 2021 4 commits
  6. 12 Oct, 2021 17 commits
  7. 11 Oct, 2021 3 commits