Skip to content
  1. Jan 07, 2008
    • Chris Lattner's avatar
      Add predicates methods to TargetOperandInfo, and switch all clients · e55e1156
      Chris Lattner authored
      over to using them, instead of diddling Flags directly.  Change the
      various flags from const variables to enums.
      
      llvm-svn: 45677
      e55e1156
    • Gordon Henriksen's avatar
      Setting GlobalDirective in TargetAsmInfo by default rather than · c7e991b7
      Gordon Henriksen authored
      providing a misleading facility. It's used once in the MIPS backend
      and hardcoded as "\t.globl\t" everywhere else.
      
      llvm-svn: 45676
      c7e991b7
    • Chris Lattner's avatar
      Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects · a98c679d
      Chris Lattner authored
      that it is cheap and efficient to get.
      
      Move a variety of predicates from TargetInstrInfo into 
      TargetInstrDescriptor, which makes it much easier to query a predicate
      when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
      instead of going through TII, and this is much more efficient anyway. Not
      all of the predicates have been moved over yet.
      
      Update old code that used MI->getInstrDescriptor()->Flags to use the
      new predicates in many places.
      
      llvm-svn: 45674
      a98c679d
    • Owen Anderson's avatar
      Update CodeGen for MRegisterInfo --> TargetInstrInfo changes. · 0ec92e9d
      Owen Anderson authored
      llvm-svn: 45673
      0ec92e9d
    • Gordon Henriksen's avatar
      Ammending r45669 with a missing file. · 2d684b1f
      Gordon Henriksen authored
      llvm-svn: 45671
      2d684b1f
    • Gordon Henriksen's avatar
      With this patch, the LowerGC transformation becomes the · 6047b6e1
      Gordon Henriksen authored
      ShadowStackCollector, which additionally has reduced overhead with
      no sacrifice in portability.
      
      Considering a function @fun with 8 loop-local roots,
      ShadowStackCollector introduces the following overhead
      (x86):
      
      ; shadowstack prologue
              movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
              movl    (%eax), %ecx
              movl    $___gc_fun, 20(%esp)
              movl    $0, 24(%esp)
              movl    $0, 28(%esp)
              movl    $0, 32(%esp)
              movl    $0, 36(%esp)
              movl    $0, 40(%esp)
              movl    $0, 44(%esp)
              movl    $0, 48(%esp)
              movl    $0, 52(%esp)
              movl    %ecx, 16(%esp)
              leal    16(%esp), %ecx
              movl    %ecx, (%eax)
      
      ; shadowstack loop overhead
              (none)
      
      ; shadowstack epilogue
              movl    48(%esp), %edx
              movl    %edx, (%ecx)
      
      ; shadowstack metadata
              .align  3
      ___gc_fun:                              # __gc_fun
              .long   8
              .space  4
      
      In comparison to LowerGC:
      
      ; lowergc prologue
              movl    L_llvm_gc_root_chain$non_lazy_ptr, %eax
              movl    (%eax), %ecx
              movl    %ecx, 48(%esp)
              movl    $8, 52(%esp)
              movl    $0, 60(%esp)
              movl    $0, 56(%esp)
              movl    $0, 68(%esp)
              movl    $0, 64(%esp)
              movl    $0, 76(%esp)
              movl    $0, 72(%esp)
              movl    $0, 84(%esp)
              movl    $0, 80(%esp)
              movl    $0, 92(%esp)
              movl    $0, 88(%esp)
              movl    $0, 100(%esp)
              movl    $0, 96(%esp)
              movl    $0, 108(%esp)
              movl    $0, 104(%esp)
              movl    $0, 116(%esp)
              movl    $0, 112(%esp)
      
      ; lowergc loop overhead
              leal    44(%esp), %eax
              movl    %eax, 56(%esp)
              leal    40(%esp), %eax
              movl    %eax, 64(%esp)
              leal    36(%esp), %eax
              movl    %eax, 72(%esp)
              leal    32(%esp), %eax
              movl    %eax, 80(%esp)
              leal    28(%esp), %eax
              movl    %eax, 88(%esp)
              leal    24(%esp), %eax
              movl    %eax, 96(%esp)
              leal    20(%esp), %eax
              movl    %eax, 104(%esp)
              leal    16(%esp), %eax
              movl    %eax, 112(%esp)
      
      ; lowergc epilogue
              movl    48(%esp), %edx
              movl    %edx, (%ecx)
      
      ; lowergc metadata
              (none)
      
      llvm-svn: 45670
      6047b6e1
    • Gordon Henriksen's avatar
      Enabling the target-independent garbage collection infrastructure by hooking it · 5180e856
      Gordon Henriksen authored
      up to the various compiler pipelines.
      
      This doesn't actually add support for any GC algorithms, which means it 
      temporarily breaks a few tests. To be fixed shortly.
      
      llvm-svn: 45669
      5180e856
    • Chris Lattner's avatar
      a4ce4f69
  2. Jan 06, 2008
  3. Jan 05, 2008
  4. Jan 04, 2008
  5. Jan 02, 2008
  6. Jan 01, 2008
  7. Dec 31, 2007
Loading