Skip to content
  1. Dec 16, 2008
  2. Dec 15, 2008
  3. Dec 14, 2008
    • Duncan Sands's avatar
      Reapply r60997, this time without forgetting that · f312dc77
      Duncan Sands authored
      target constants are allowed to have an illegal
      type.
      
      llvm-svn: 61006
      f312dc77
    • Bill Wendling's avatar
      Temporarily revert r60997. It was causing this failure: · e5af6f19
      Bill Wendling authored
      Running /Users/void/llvm/llvm.src/test/CodeGen/Generic/dg.exp ...
      FAIL: /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll
      Failed with exit(1) at line 1
      while running:  llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/Generic/asm-large-immediate.ll |  llc | /usr/bin/grep 68719476738
      Assertion failed: ((TypesNeedLegalizing || getTypeAction(VT) == Legal) && "Illegal type introduced after type legalization?"), function HandleOp, file /Users/void/llvm/llvm.src/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp, line 493.
      0   llc               0x0085392e char const* std::find<char const*, char>(char const*, char const*, char const&) + 98
      1   llc               0x00853e63 llvm::sys::PrintStackTraceOnErrorSignal() + 593
      2   libSystem.B.dylib 0x96cac09b _sigtramp + 43
      3   libSystem.B.dylib 0xffffffff _sigtramp + 1765097359
      4   libSystem.B.dylib 0x96d24ec2 raise + 26
      5   libSystem.B.dylib 0x96d3447f abort + 73
      6   libSystem.B.dylib 0x96d26063 __assert_rtn + 101
      7   llc               0x004f9018 llvm::cast_retty<llvm::SubprogramDesc, llvm::DebugInfoDesc*>::ret_type llvm::cast<llvm::Sub
      ...
      
      llvm-svn: 61001
      e5af6f19
  4. Dec 13, 2008
  5. Dec 12, 2008
    • Devang Patel's avatar
      Do not print empty DW_AT_comp_dir. · 42828e81
      Devang Patel authored
      llvm-svn: 60965
      42828e81
    • Duncan Sands's avatar
      When expanding unaligned loads and stores do not make · 8f352fe1
      Duncan Sands authored
      use of illegal integer types: instead, use a stack slot
      and copying via integer registers.  The existing code
      is still used if the bitconvert is to a legal integer
      type.
      
      This fires on the PPC testcases 2007-09-08-unaligned.ll
      and vec_misaligned.ll.  It looks like equivalent code
      is generated with these changes, just permuted, but
      it's hard to tell.
      
      With these changes, nothing in LegalizeDAG produces
      illegal integer types anymore.  This is a prerequisite
      for removing the LegalizeDAG type legalization code.
      
      While there I noticed that the existing code doesn't
      handle trunc store of f64 to f32: it turns this into
      an i64 store, which represents a 4 byte stack smash.
      I added a FIXME about this.  Hopefully someone more
      motivated than I am will take care of it.
      
      llvm-svn: 60964
      8f352fe1
    • Evan Cheng's avatar
      Fix add/sub expansion: don't create ADD / SUB with two results (seems like... · 3270a1de
      Evan Cheng authored
      Fix add/sub expansion: don't create ADD / SUB with two results (seems like everyone is doing this these days :-). Patch by Daniel M Gessel!
      
      llvm-svn: 60958
      3270a1de
    • Duncan Sands's avatar
      When using a 4 byte jump table on a 64 bit machine, · e4bcb8e2
      Duncan Sands authored
      do an extending load of the 4 bytes rather than a
      potentially illegal (type) i32 load followed by a
      sign extend.
      
      llvm-svn: 60945
      e4bcb8e2
    • Mon P Wang's avatar
      Added support for SELECT v8i8 v4i16 for X86 (MMX) · 9c2d26d2
      Mon P Wang authored
      Added support for TRUNC v8i16 to v8i8 for X86 (MMX)
      
      llvm-svn: 60916
      9c2d26d2
    • Bill Wendling's avatar
      Redo the arithmetic with overflow architecture. I was changing the semantics of · 1a317678
      Bill Wendling authored
      ISD::ADD to emit an implicit EFLAGS. This was horribly broken. Instead, replace
      the intrinsic with an ISD::SADDO node. Then custom lower that into an
      X86ISD::ADD node with a associated SETCC that checks the correct condition code
      (overflow or carry). Then that gets lowered into the correct X86::ADDOvf
      instruction.
      
      Similar for SUB and MUL instructions.
      
      llvm-svn: 60915
      1a317678
  6. Dec 11, 2008
  7. Dec 10, 2008
  8. Dec 09, 2008
    • Dan Gohman's avatar
      Rewrite the SDep class, and simplify some of the related code. · 2d170896
      Dan Gohman authored
      The Cost field is removed. It was only being used in a very limited way,
      to indicate when the scheduler should attempt to protect a live register,
      and it isn't really needed to do that. If we ever want the scheduler to
      start inserting copies in non-prohibitive situations, we'll have to
      rethink some things anyway.
      
      A Latency field is added. Instead of giving each node a single
      fixed latency, each edge can have its own latency. This will eventually
      be used to model various micro-architecture properties more accurately.
      
      The PointerIntPair class and an internal union are now used, which
      reduce the overall size.
      
      llvm-svn: 60806
      2d170896
    • Dan Gohman's avatar
      Minor code simplification. · 9356d8f7
      Dan Gohman authored
      llvm-svn: 60804
      9356d8f7
    • Bill Wendling's avatar
      Add sub/mul overflow intrinsics. This currently doesn't have a · db8ec2d7
      Bill Wendling authored
      target-independent way of determining overflow on multiplication. It's very
      tricky. Patch by Zoltan Varga!
      
      llvm-svn: 60800
      db8ec2d7
    • Duncan Sands's avatar
      Fix PR3117: not all nodes being legalized. The · 445071c4
      Duncan Sands authored
      essential problem was that the DAG can contain
      random unused nodes which were never analyzed.
      When remapping a value of a node being processed,
      such a node may become used and need to be analyzed;
      however due to operands being transformed during
      analysis the node may morph into a different one.
      Users of the morphing node need to be updated, and
      this wasn't happening.  While there I added a bunch
      of documentation and sanity checks, so I (or some
      other poor soul) won't have to scratch their head
      over this stuff so long trying to remember how it
      was all supposed to work next time some obscure
      problem pops up!  The extra sanity checking exposed
      a few places where invariants weren't being preserved,
      so those are fixed too.  Since some of the sanity
      checking is expensive, I added a flag to turn it
      on.  It is also turned on when building with
      ENABLE_EXPENSIVE_CHECKS=1.
      
      llvm-svn: 60797
      445071c4
Loading