Skip to content
  1. Jan 17, 2008
    • Scott Michel's avatar
      Forward progress: crtbegin.c now compiles successfully! · e4d3e3c0
      Scott Michel authored
      Fixed CellSPU's A-form (local store) address mode, so that all globals,
      externals, constant pool and jump table symbols are now wrapped within
      a SPUISD::AFormAddr pseudo-instruction. This now identifies all local
      store memory addresses, although it requires a bit of legerdemain during
      instruction selection to properly select loads to and stores from local
      store, properly generating "LQA" instructions.
      
      Also added mul_ops.ll test harness for exercising integer multiplication.
      
      llvm-svn: 46142
      e4d3e3c0
    • Chris Lattner's avatar
      This commit changes: · 1ea55cf8
      Chris Lattner authored
      1. Legalize now always promotes truncstore of i1 to i8. 
      2. Remove patterns and gunk related to truncstore i1 from targets.
      3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
      4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
      5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
         X86 currently doesn't support truncstore of any of its integer types.
      6. Add legalize support for truncstores with invalid value input types.
      7. Add a dag combine transform to turn store(truncate) into truncstore when
         safe.
      
      The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
      
      _foo:
      	fldt	20(%esp)
      	fldt	4(%esp)
      	faddp	%st(1)
      	movl	36(%esp), %eax
      	fstps	(%eax)
      	ret
      
      instead of:
      
      _foo:
      	subl	$4, %esp
      	fldt	24(%esp)
      	fldt	8(%esp)
      	faddp	%st(1)
      	fstps	(%esp)
      	movl	40(%esp), %eax
      	movss	(%esp), %xmm0
      	movss	%xmm0, (%eax)
      	addl	$4, %esp
      	ret
      
      llvm-svn: 46140
      1ea55cf8
    • Chris Lattner's avatar
      new testcase. · 9f7fed1c
      Chris Lattner authored
      llvm-svn: 46139
      9f7fed1c
    • Ted Kremenek's avatar
      Implemented "FIXME" in ImutAVLTree: isEqual() now also compares the *data* value · 2b8b71c1
      Ted Kremenek authored
      and not just the key value when comparing trees. To do this we added data_type
      and data_type_ref to the ImutContainerInfo trait classes. For values stored in
      the tree that do not have separate key and data components, data_type is simply
      a typedef of bool, and isDataEqual() always evaluates to true. This allows us to
      support both ImmutableSet and ImmutableMap using the same underlying logic.
      
      llvm-svn: 46130
      2b8b71c1
    • Chris Lattner's avatar
      add some helper methods. · 686dfe82
      Chris Lattner authored
      llvm-svn: 46128
      686dfe82
    • Evan Cheng's avatar
      Test case for varargs parameter attribute issue I just fixed. · 9a93dc95
      Evan Cheng authored
      llvm-svn: 46127
      9a93dc95
    • Chris Lattner's avatar
      code cleanups, no functionality change. · 7eabed35
      Chris Lattner authored
      llvm-svn: 46126
      7eabed35
    • Chris Lattner's avatar
      * Introduce a new SelectionDAG::getIntPtrConstant method · 72733e57
      Chris Lattner authored
        and switch various codegen pieces and the X86 backend over
        to using it.
      
      * Add some comments to SelectionDAGNodes.h
      
      * Introduce a second argument to FP_ROUND, which indicates
        whether the FP_ROUND changes the value of its input. If
        not it is safe to xform things like fp_extend(fp_round(x)) -> x.
      
      llvm-svn: 46125
      72733e57
    • Chris Lattner's avatar
      add testcase that has been sitting in my tree for awhile. · 89126bde
      Chris Lattner authored
      llvm-svn: 46124
      89126bde
    • Tanya Lattner's avatar
      Update license for current year. · 64318772
      Tanya Lattner authored
      llvm-svn: 46120
      64318772
    • Tanya Lattner's avatar
      Update version to 2.3svn · 45746fb2
      Tanya Lattner authored
      Regenerate configure with 2.60. 
      
      llvm-svn: 46119
      45746fb2
    • Evan Cheng's avatar
      DAE bug fix. Don't lose parameter attributes on vararg arguments. · 04af661b
      Evan Cheng authored
      llvm-svn: 46113
      04af661b
    • Devang Patel's avatar
      Enable CBE · 16808a32
      Devang Patel authored
      llvm-svn: 46112
      16808a32
    • Evan Cheng's avatar
      When a live virtual register is being clobbered by an implicit def, it is spilled · 54c20b55
      Evan Cheng authored
      and the spill is its kill. However, if the local allocator has determined the
      register has not been modified (possible when its value was reloaded), it would
      not issue a restore. In that case, mark the last use of the virtual register as
      kill.
      
      llvm-svn: 46111
      54c20b55
    • Chris Lattner's avatar
      Fix arg promotion to propagate the correct attrs on the calls to · 5630c4f2
      Chris Lattner authored
      promoted functions.  This is important for varargs calls in 
      particular.  Thanks to duncan for providing a great testcase.
      
      llvm-svn: 46108
      5630c4f2
    • Evan Cheng's avatar
      Replace std::vector<bool> with BitVector. · dc5b4c57
      Evan Cheng authored
      llvm-svn: 46104
      dc5b4c57
    • Evan Cheng's avatar
      Fixes a nasty dag combiner bug that causes a bunch of tests to fail at -O0. · 7be15280
      Evan Cheng authored
      It's not safe to use the two value CombineTo variant to combine away a dead load.
      e.g. 
      v1, chain2 = load chain1, loc
      v2, chain3 = load chain2, loc
      v3         = add v2, c 
      Now we replace use of v1 with undef, use of chain2 with chain1.
      ReplaceAllUsesWith() will iterate through uses of the first load and update operands:
      v1, chain2 = load chain1, loc
      v2, chain3 = load chain1, loc
      v3         = add v2, c 
      Now the second load is the same as the first load, SelectionDAG cse will ensure
      the use of second load is replaced with the first load.
      v1, chain2 = load chain1, loc
      v3         = add v1, c
      Then v1 is replaced with undef and bad things happen.
      
      llvm-svn: 46099
      7be15280
  2. Jan 16, 2008
  3. Jan 15, 2008
Loading