1. 29 Aug, 2015 1 commit
  2. 14 Aug, 2015 1 commit
    • Andreas Fried's avatar
      Implement vararg handling in a more portable way (for now only for IA32). · f833aa25
      Andreas Fried authored
      This adds two builtin kinds, ir_bk_va_start and ir_bk_va_arg. va_arg Builtins
      are lowered in the lower_builtins pass with a function provided by the backend,
      whereby most architectures can use be_default_lower_va_args. va_start Builtins
      are lowered in the backend.
      
      Note: This commit breaks all backends except for IA32. SPARC and AMD64 are
      implemented in later commits. The ARM backend previously miscompiled variadic
      functions, and will now throw a proper error.
      f833aa25
  3. 09 Aug, 2015 1 commit
    • Christoph Mallon's avatar
      be: Reintroduce be_Start. · 36de1849
      Christoph Mallon authored
      All backends have similar empty Start nodes, which just provide registers.
      So having one generic backend Start node to share some infrastructure is sensible.
      36de1849
  4. 05 Aug, 2015 1 commit
  5. 04 Aug, 2015 1 commit
  6. 28 Jul, 2015 1 commit
    • Christoph Mallon's avatar
      be: Add and use be_new_Proj(). · 9a6b8525
      Christoph Mallon authored
      It is like new_r_Proj(), but the mode is determined automatically from the out requirement of the predecessor.
      This probably resolves some mode mismatches in untested code paths -- AMD64 backend and SPARC hard float, I'm looking at you!
      9a6b8525
  7. 22 Jul, 2015 1 commit
    • Matthias Braun's avatar
      ia32: PIC rewrite, handles most of elf PIC now · f345dbf8
      Matthias Braun authored
      This uses the newly introduced be_Relocation node to perform most PIC
      transformations in ia32_pic.c. This introduces the elf and elf-no-plt
      PIC modes. The "efl" mode does not work yet because the additional ebx
      input makes calls register pressure unfaithful.
      f345dbf8
  8. 20 Jul, 2015 4 commits
    • Matthias Braun's avatar
      ia32: Introduce pic_styles enum+switch · f856bce3
      Matthias Braun authored
      Only IA32_PIC_NONE and IA32_PIC_MACHO so far, but more will come.
      f856bce3
    • Matthias Braun's avatar
      ff702c0b
    • Matthias Braun's avatar
      ia32: Introduce FRAMEOFFSET immediate type · 5796136e
      Matthias Braun authored
      This way we don't need a separate frame_entity field in the attribute
      struct anymore. We can also use the immediate type to determine whether
      we need to assign a fresh stackentity to a node.
      This commit does not change the frame_use field, which is now a
      duplicate way to indicate whether we need to assign a stackentity. This
      currently requires a lot of asserts to ensure the two stay in sync. In
      the future I'd like to use frame_use only for the special case when a
      32bit or 64bit entity needs to be forced.
      5796136e
    • Matthias Braun's avatar
      ia32: Simplify ia32_set_frame_offset() PopMem adjustments · 15b5dfe9
      Matthias Braun authored
      No need to adjust Pop which cannot have frame offset destinations,
      determine whether the fixup is necessary by checking the base register
      used instead of relying on generic frame offset stuff.
      15b5dfe9
  9. 19 Jul, 2015 1 commit
    • Matthias Braun's avatar
      ia32: Add kind attribute to x86_imm32_t · 92ed4713
      Matthias Braun authored
      It is now required to set a (relocation) kind when entity != NULL.
      Adds IMM_ADDR, PICBASE_REL kinds to differentiate between absolute
      addresses and picbase relative addresses. Maintain the no_picbase_adjust
      flag in parallel for testing. We should be able to remove it in a
      subsequent commit.
      92ed4713
  10. 07 Jul, 2015 2 commits
  11. 01 Jul, 2015 1 commit
    • Matthias Braun's avatar
      Remove produces_sp register constraint · 58b0168a
      Matthias Braun authored
      We can easily identify the outputs producing a stack pointer by looking
      if the stack pointer register is assigned. Unfortunately this also
      needed a new mechanism to tell the verifier that some registers are not
      in SSA form (all the time) which needs a few extra lines in each
      backend.
      58b0168a
  12. 19 Jun, 2015 4 commits
  13. 24 May, 2015 2 commits
    • Matthias Braun's avatar
      be: Move main backend loop into backends. · 3e79d08e
      Matthias Braun authored
      Instead of having a generaic main loop in be_main with several callbacks
      into the targets, split the code in be_main up into a set of convenience
      functions and let the targets implement the main loop itself. This is
      nicer because:
      
      - The control flow into and out of the functions in the target becomes
        obvious as no external party is using callbacks anymore.
      - Targets can insert custom code at any place between the generic
        passes.
      - In the future we can parameterize the generic backend passes directly
        instead of stuffing info into generic isa_if structures.
      3e79d08e
    • Matthias Braun's avatar
      be: Some cleanups · 23f78db8
      Matthias Braun authored
      23f78db8
  14. 07 May, 2015 1 commit
    • Matthias Braun's avatar
      Rework setting some OS details · 3d6ab117
      Matthias Braun authored
      The idea here, is that you do not simply set a target operating system
      or architecture, but have a setting for all things different between the
      operating systems. Knowledge about the name and habits of the operating
      system is left to the frontend.
      (We may want to provide a small support library in the future to share
      the triple parsing and OS -> settings code between multiple frontends).
      3d6ab117
  15. 18 Jan, 2015 5 commits
  16. 17 Jan, 2015 1 commit
  17. 11 Jan, 2015 1 commit
  18. 01 Jan, 2015 1 commit
  19. 31 Dec, 2014 2 commits
  20. 30 Dec, 2014 1 commit
    • Christoph Mallon's avatar
      amd64, ia32: Remove CopyKeep from function prologue. · 573e6cf8
      Christoph Mallon authored
      These are remnants from back when the prologue was added early and scheduling was not done, yet.
      They were there to help the scheduler not to move an IncSP before the copy from sp to bp and thus having two values in sp live at the same time.
      573e6cf8
  21. 29 Dec, 2014 4 commits
  22. 26 Dec, 2014 3 commits