Skip to content
  1. Jun 16, 2009
  2. Jun 15, 2009
    • Devang Patel's avatar
      Gracefully handle imbalanced inline function begin and end markers. · 56e6fe16
      Devang Patel authored
      llvm-svn: 73426
      56e6fe16
    • Evan Cheng's avatar
      ifcvt should ignore cfg where true and false successors are the same. · b9bff588
      Evan Cheng authored
      llvm-svn: 73423
      b9bff588
    • Arnold Schwaighofer's avatar
      CheckTailCallReturnConstraints is missing a check on the · cb9046cf
      Arnold Schwaighofer authored
      incomming chain of the RETURN node. The incomming chain must
      be the outgoing chain of the CALL node. This causes the
      backend to identify tail calls that are not tail calls. This
      patch fixes this.
      
      llvm-svn: 73387
      cb9046cf
    • Evan Cheng's avatar
      Part 1. · 1283c6a0
      Evan Cheng authored
      - Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent.
      - Allow targets to specify alternative register allocation orders based on allocation hint.
      
      Part 2.
      - Use the register allocation hint system to implement more aggressive load / store multiple formation.
      - Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g.
      v1025 = LDR v1024, 0
      v1026 = LDR v1024, 0
      =>
      v1025,v1026 = LDRD v1024, 0
      
      If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair.
      
      - Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions.
      
      This is work in progress, not yet enabled.
      
      llvm-svn: 73381
      1283c6a0
    • Dan Gohman's avatar
      Fix old-style type names in comments. · 4fe64deb
      Dan Gohman authored
      llvm-svn: 73362
      4fe64deb
  3. Jun 14, 2009
  4. Jun 13, 2009
    • Evan Cheng's avatar
      Add a ARM specific pre-allocation pass that re-schedule loads / stores from · 185c9ef0
      Evan Cheng authored
      consecutive addresses togther. This makes it easier for the post-allocation pass
      to form ldm / stm.
      
      This is step 1. We are still missing a lot of ldm / stm opportunities because
      of register allocation are not done in the desired order. More enhancements
      coming.
      
      llvm-svn: 73291
      185c9ef0
    • Devang Patel's avatar
      llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in... · 64e6529e
      Devang Patel authored
      llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in a function.  If that happens then any basic block that follows (lexically) the block with regin.end will not have scope info available.  LexicalScopeStack relies on processing basic block in CFG order, but this processing order is not guaranteed. Things get complicated when the optimizer gets a chance to optimizer IR with dbg intrinsics. 
      Apply defensive patch to preserve at least one lexical scope till the end of function.
      
      llvm-svn: 73282
      64e6529e
    • Owen Anderson's avatar
      Improve style. · c59a7cb8
      Owen Anderson authored
      llvm-svn: 73258
      c59a7cb8
  5. Jun 12, 2009
  6. Jun 11, 2009
  7. Jun 10, 2009
  8. Jun 09, 2009
  9. Jun 07, 2009
  10. Jun 06, 2009
  11. Jun 05, 2009
    • Devang Patel's avatar
      Add new function attribute - noimplicitfloat · d1c7d349
      Devang Patel authored
      Update code generator to use this attribute and remove NoImplicitFloat target option.
      Update llc to set this attribute when -no-implicit-float command line option is used.
      
      llvm-svn: 72959
      d1c7d349
    • Nate Begeman's avatar
      Adapt the x86 build_vector dagcombine to the current state of the legalizer. · 624690c6
      Nate Begeman authored
      build vectors with i64 elements will only appear on 32b x86 before legalize.
      Since vector widening occurs during legalize, and produces i64 build_vector 
      elements, the dag combiner is never run on these before legalize splits them
      into 32b elements.
      
      Teach the build_vector dag combine in x86 back end to recognize consecutive 
      loads producing the low part of the vector.
      
      Convert the two uses of TLI's consecutive load recognizer to pass LoadSDNodes
      since that was required implicitly.
      
      Add a testcase for the transform.
      
      Old:
      	subl	$28, %esp
      	movl	32(%esp), %eax
      	movl	4(%eax), %ecx
      	movl	%ecx, 4(%esp)
      	movl	(%eax), %eax
      	movl	%eax, (%esp)
      	movaps	(%esp), %xmm0
      	pmovzxwd	%xmm0, %xmm0
      	movl	36(%esp), %eax
      	movaps	%xmm0, (%eax)
      	addl	$28, %esp
      	ret
      
      New:
      	movl	4(%esp), %eax
      	pmovzxwd	(%eax), %xmm0
      	movl	8(%esp), %eax
      	movaps	%xmm0, (%eax)
      	ret
      
      llvm-svn: 72957
      624690c6
    • Dan Gohman's avatar
      Remove some unnecessary #includes. · d9ef48a7
      Dan Gohman authored
      llvm-svn: 72948
      d9ef48a7
    • Sanjiv Gupta's avatar
      Allow libcalls for i16 sdiv/udiv/rem operations. · 7925c5fd
      Sanjiv Gupta authored
      llvm-svn: 72941
      7925c5fd
Loading