Skip to content
  1. Dec 29, 2007
  2. Dec 22, 2007
  3. Dec 20, 2007
  4. Dec 19, 2007
    • Duncan Sands's avatar
      Simplify LowerCallTo by using a callsite. · e9d8861c
      Duncan Sands authored
      llvm-svn: 45198
      e9d8861c
    • Duncan Sands's avatar
      The C++ exception handling personality function wants · 030bce7b
      Duncan Sands authored
      to know about calls that cannot throw ('nounwind'):
      if such a call does throw for some reason then the
      personality will terminate the program.  The distinction
      between an ordinary call and a nounwind call is that
      an ordinary call gets an entry in the exception table
      but a nounwind call does not.  This patch sets up the
      exception table appropriately.  One oddity is that
      I've chosen to bracket nounwind calls with labels (like
      invokes) - the other choice would have been to bracket
      ordinary calls with labels.  While bracketing
      ordinary calls is more natural (because bracketing
      by labels would then correspond exactly to getting an
      entry in the exception table), I didn't do it because
      introducing labels impedes some optimizations and I'm
      guessing that ordinary calls occur more often than
      nounwind calls.  This fixes the gcc filter2 eh test,
      at least at -O0 (the inliner needs some tweaking at
      higher optimization levels).
      
      llvm-svn: 45197
      030bce7b
    • Evan Cheng's avatar
      9f06e5e2
  5. Dec 18, 2007
  6. Dec 17, 2007
  7. Dec 14, 2007
  8. Dec 12, 2007
    • Dan Gohman's avatar
      Allow vector integer constants to be created with · 7a7742c2
      Dan Gohman authored
      SelectionDAG::getConstant, in the same way as vector floating-point
      constants. This allows the legalize expansion code for @llvm.ctpop and
      friends to be usable with vector types.
      
      llvm-svn: 44954
      7a7742c2
  9. Dec 11, 2007
  10. Dec 09, 2007
  11. Dec 08, 2007
  12. Dec 06, 2007
    • Dale Johannesen's avatar
      Redo previous patch so optimization only done for i1. · 5eff4de9
      Dale Johannesen authored
      Simpler and safer.
      
      llvm-svn: 44663
      5eff4de9
    • Chris Lattner's avatar
      third time around: instead of disabling this completely, · eedaf92f
      Chris Lattner authored
      only disable it if we don't know it will be obviously profitable.
      Still fixme, but less so. :)
      
      llvm-svn: 44658
      eedaf92f
    • Chris Lattner's avatar
      Actually, disable this code for now. More analysis and improvements to · b5fdfb96
      Chris Lattner authored
      the X86 backend are needed before this should be enabled by default.
      
      llvm-svn: 44657
      b5fdfb96
    • Chris Lattner's avatar
      implement a readme entry, compiling the code into: · 7c709a5d
      Chris Lattner authored
      _foo:
      	movl	$12, %eax
      	andl	4(%esp), %eax
      	movl	_array(%eax), %eax
      	ret
      
      instead of:
      
      _foo:
      	movl	4(%esp), %eax
      	shrl	$2, %eax
      	andl	$3, %eax
      	movl	_array(,%eax,4), %eax
      	ret
      
      As it turns out, this triggers all the time, in a wide variety of
      situations, for example, I see diffs like this in various programs:
      
      -       movl    8(%eax), %eax
      -       shll    $2, %eax
      -       andl    $1020, %eax
      -       movl    (%esi,%eax), %eax
      +       movzbl  8(%eax), %eax
      +       movl    (%esi,%eax,4), %eax
      
      
      -       shll    $2, %edx
      -       andl    $1020, %edx
      -       movl    (%edi,%edx), %edx
      +       andl    $255, %edx
      +       movl    (%edi,%edx,4), %edx
      
      Unfortunately, I also see stuff like this, which can be fixed in the
      X86 backend:
      
      -       andl    $85, %ebx
      -       addl    _bit_count(,%ebx,4), %ebp
      +       shll    $2, %ebx
      +       andl    $340, %ebx
      +       addl    _bit_count(%ebx), %ebp
      
      llvm-svn: 44656
      7c709a5d
Loading