• Matthias Braun's avatar
    be: Rewrite stack frame handling · b6787e36
    Matthias Braun authored
    This is a bigger rewrite of stack frame handling in the backend:
    
    - Do the stack frame type layout late, after all the spill slots have
      been created. This way we can avoid (and remove) the brittle
      frame_alloc_area().
    - Standardize the meaning of stack entity offsets. After stack frame type
      layout they are relative to the stack pointer position at the beginning
      of the function.  It is all in one type now, no splitting into "arg",
      "between" and "stack_frame" type anymore.
    - Generalize the stack pointer simulation code to work with a single
      callback. Represent stack state as current offset and align_padding
      number. Now that callbacks can access and modify them both we do not
      need custom code in the sparc backend anymore.
    - Remove alignment specification on IncSP, only keep a ignore_align flag
      used for the last IncSP that has to remove all existing sp adjustments
      and may end up on a misaligned SP on ia32/amd64.
    - Align stack by default on ia32+amd64 backends.
    b6787e36
typerep.h 62.2 KB