Skip to content
  1. Jan 27, 2009
    • Devang Patel's avatar
      · 45c899cd
      Devang Patel authored
      Assorted debug info fixes.
      - DW_AT_bit_size is only suitable for bitfields.
      - Encode source location info for derived types.
      - Source location and type size info is not useful for subroutine_type (info is included in respective DISubprogram) and array_type.
      
      llvm-svn: 63077
      45c899cd
    • Evan Cheng's avatar
      No need to keep size of DebugLocations vector separately. · b8c79bdc
      Evan Cheng authored
      llvm-svn: 63070
      b8c79bdc
  2. Jan 26, 2009
  3. Jan 25, 2009
    • Dan Gohman's avatar
      Eliminate the loop that searches through each of the operands · f1d38be2
      Dan Gohman authored
      of each use in the SelectionDAG ReplaceAllUses* functions. Thanks
      to Chris for spotting this opportunity.
      
      Also, factor out code from all 5 of the ReplaceAllUses* functions
      into AddNonLeafNodeToCSEMaps, which is now renamed
      AddModifiedNodeToCSEMaps to more accurately reflect its purpose.
      
      llvm-svn: 62964
      f1d38be2
    • Dan Gohman's avatar
      Whitespace tidiments. · 3a113ec4
      Dan Gohman authored
      llvm-svn: 62963
      3a113ec4
    • Dan Gohman's avatar
      Move the N->use_empty() assert from DeleteNode to · e7b0dde2
      Dan Gohman authored
      DeleteNodeNotInCSEMaps, since DeleteNode just calls
      DeleteNodeNotInCSEMaps.
      
      llvm-svn: 62962
      e7b0dde2
    • Evan Cheng's avatar
      Teach 2addr pass to be do more commuting. If both uses of a two-address... · abda665f
      Evan Cheng authored
      Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
      %reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1                                                                                                                                     
      %reg1029<def> = MOV8rr %reg1028                                                                                                                                                      
      %reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>                                                                                                                            
      insert => %reg1030<def> = MOV8rr %reg1028                                                                                                                                            
      %reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>                                                                                                         
      
      In this case, it might not be possible to coalesce the second MOV8rr                                                                                                                 
      instruction if the first one is coalesced. So it would be profitable to                                                                                                              
      commute it:                                                                                                                                                                          
      %reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1                                                                                                                                     
      %reg1029<def> = MOV8rr %reg1028                                                                                                                                                      
      %reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>                                                                                                                            
      insert => %reg1030<def> = MOV8rr %reg1029                                                                                                                                            
      %reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>
      
      llvm-svn: 62954
      abda665f
  4. Jan 24, 2009
  5. Jan 23, 2009
  6. Jan 22, 2009
    • Bob Wilson's avatar
      Fix a minor bug in DAGCombiner's folding of SELECT. Folding "select C, 0, 1" · c2dc7ee5
      Bob Wilson authored
      to "C ^ 1" is only valid when C is known to be either 0 or 1.  Most of the
      similar foldings in this function only handle "i1" types, but this one appears
      intentionally written to handle larger integer types.  If C has an integer
      type larger than "i1", this needs to check if the high bits of a boolean
      are known to be zero.  I also changed the comment to describe this folding as
      "C ^ 1" instead of "~C", since that is what the code does and since the latter
      would only be valid for "i1" types.  The good news is that most LLVM targets
      use TargetLowering::ZeroOrOneBooleanContent so this change will not disable
      the optimization; the bad news is that I've been unable to come up with a
      testcase to demonstrate the problem.
      
      I have also removed a "FIXME" comment for folding "select C, X, 0" to "C & X",
      since the code looks correct to me.  It could be made more aggressive by not
      limiting the type to "i1", but that would then require checking for
      TargetLowering::ZeroOrNegativeOneBooleanContent.  Similar changes could be
      done for the other SELECT foldings, but it was decided to be not worth the
      trouble and complexity (see e.g., r44663).
      
      llvm-svn: 62790
      c2dc7ee5
    • Dan Gohman's avatar
      Don't create ISD::FNEG nodes after legalize if they aren't legal. · 1f3411de
      Dan Gohman authored
      Simplify x+0 to x in unsafe-fp-math mode. This avoids a bunch of
      redundant work in many cases, because in unsafe-fp-math mode,
      ISD::FADD with a constant is considered free to negate, so the
      DAGCombiner often negates x+0 to -0-x thinking it's free, when
      in reality the end result is -x, which is more expensive than x.
      
      Also, combine x*0 to 0.
      
      This fixes PR3374.
      
      llvm-svn: 62789
      1f3411de
    • Bob Wilson's avatar
      Add SelectionDAG::getNOT method to construct bitwise NOT operations, · c5890050
      Bob Wilson authored
      corresponding to the "not" and "vnot" PatFrags.  Use the new method
      in some places where it seems appropriate.
      
      llvm-svn: 62768
      c5890050
    • Sanjiv Gupta's avatar
      Few targets like the tiny little PIC16 have only 16-bit pointers. · 4186ddfc
      Sanjiv Gupta authored
      llvm-svn: 62763
      4186ddfc
    • Evan Cheng's avatar
      Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and... · 4a0bf66e
      Evan Cheng authored
      Eliminate a couple of fields from TargetRegisterClass: SubRegClasses and SuperRegClasses. These are not necessary. Also eliminate getSubRegisterRegClass and getSuperRegisterRegClass. These are slow and their results can change if register file names change. Just use TargetLowering::getRegClassFor() to get the right TargetRegisterClass instead.
      
      llvm-svn: 62762
      4a0bf66e
    • Chris Lattner's avatar
      fix a typo · e09d631d
      Chris Lattner authored
      llvm-svn: 62761
      e09d631d
  7. Jan 21, 2009
Loading