Skip to content
  1. Feb 10, 2008
  2. Feb 08, 2008
  3. Feb 07, 2008
  4. Feb 06, 2008
  5. Feb 05, 2008
  6. Feb 04, 2008
    • Duncan Sands's avatar
      I don't see how NodeUpdated can be called with a · 354e3532
      Duncan Sands authored
      ReadyToProcess node - add an assertion to check
      this.  Add an assertion to NodeDeleted that checks
      that processed/ready nodes are indeed not deleted.
      It is because they are never deleted that none of
      the maps can have a deleted node as the source of
      a mapping.  It does however seem to be possible in
      theory to have a deleted value as the target of a
      mapping, however this has not yet been spotted in
      the wild.  Still mulling on what to do about this.
      [The theoretical situation is this: a node A is
      expanded/promoted/whatever to a newly created node
      B.  Thus A->B is added to a map.  When the subtree
      rooted at B is legalized it is conceivable that B
      is deleted due to RAUW on a node somewhere above
      it].
      
      llvm-svn: 46705
      354e3532
  7. Feb 03, 2008
  8. Feb 02, 2008
    • Evan Cheng's avatar
      SDIsel processes llvm.dbg.declare by recording the variable debug information... · efd142a9
      Evan Cheng authored
      SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
      Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
      For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
      
      llvm-svn: 46659
      efd142a9
  9. Feb 01, 2008
  10. Jan 31, 2008
  11. Jan 30, 2008
  12. Jan 29, 2008
  13. Jan 28, 2008
  14. Jan 27, 2008
    • Chris Lattner's avatar
      Implement some dag combines that allow doing fneg/fabs/fcopysign in integer · 888560d6
      Chris Lattner authored
      registers if used by a bitconvert or using a bitconvert.  This allows us to
      avoid constant pool loads and use cheaper integer instructions when the
      values come from or end up in integer regs anyway.  For example, we now 
      compile CodeGen/X86/fp-in-intregs.ll to:
      
      _test1:
      	movl	$2147483648, %eax
      	xorl	4(%esp), %eax
      	ret
      _test2:
      	movl	$1065353216, %eax
      	orl	4(%esp), %eax
      	andl	$3212836864, %eax
      	ret
      
      Instead of:
      _test1:
      	movss	4(%esp), %xmm0
      	xorps	LCPI2_0, %xmm0
      	movd	%xmm0, %eax
      	ret
      _test2:
      	movss	4(%esp), %xmm0
      	andps	LCPI3_0, %xmm0
      	movss	LCPI3_1, %xmm1
      	andps	LCPI3_2, %xmm1
      	orps	%xmm0, %xmm1
      	movd	%xmm1, %eax
      	ret
      
      bitconverts can happen due to various calling conventions that require
      fp values to passed in integer regs in some cases, e.g. when returning
      a complex.
      
      llvm-svn: 46414
      888560d6
  15. Jan 26, 2008
    • Chris Lattner's avatar
      Infer alignment of loads and increase their alignment when we can tell they are · e30e33af
      Chris Lattner authored
      from the stack.  This allows us to compile stack-align.ll to:
      
      _test:
      	movsd	LCPI1_0, %xmm0
      	movapd	%xmm0, %xmm1
      ***	andpd	4(%esp), %xmm1
      	andpd	_G, %xmm0
      	addsd	%xmm1, %xmm0
      	movl	20(%esp), %eax
      	movsd	%xmm0, (%eax)
      	ret
      
      instead of:
      
      _test:
      	movsd	LCPI1_0, %xmm0
      **	movsd	4(%esp), %xmm1
      **	andpd	%xmm0, %xmm1
      	andpd	_G, %xmm0
      	addsd	%xmm1, %xmm0
      	movl	20(%esp), %eax
      	movsd	%xmm0, (%eax)
      	ret
      
      llvm-svn: 46401
      e30e33af
    • Chris Lattner's avatar
      Fix some bugs in SimplifyNodeWithTwoResults where it would call deletenode to · 31e9edce
      Chris Lattner authored
      delete a node even if it was not dead in some cases.  Instead, just add it to
      the worklist.  Also, make sure to use the CombineTo methods, as it was doing
      things that were unsafe: the top level combine loop could touch dangling memory.
      
      This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll
      
      llvm-svn: 46384
      31e9edce
Loading