Skip to content
  1. Apr 23, 2010
    • Chris Lattner's avatar
      reject invalid comma stuff with a message. We reject the case in · 95b0ff44
      Chris Lattner authored
      PR6888 with:
      
      $ llvm-as t.ll
      llvm-as: t.ll:2:29: error: expected metadata or 'align'
       store <3 x i32> %x, i32 1, i32 1>, <3 x i32>* %p
                                  ^
      
      instead of:
      
      $ llvm-as t.ll 
      llvm-as: 
      
      llvm-svn: 102154
      95b0ff44
    • Chris Lattner's avatar
      d8d898db
    • Chris Lattner's avatar
      The inliner was choosing to not consider call sites · 2eee5d34
      Chris Lattner authored
      that appear in the SCC as a result of inlining as candidates
      for inlining.  Change this so that it *does* consider call 
      sites that change from being indirect to being direct as a
      result of inlining.  This allows it to completely 
      "devirtualize" the testcase.
      
      llvm-svn: 102146
      2eee5d34
    • Jim Grosbach's avatar
      Update ARM DAGtoDAG for matching UBFX instruction for unsigned bitfield · 825cb299
      Jim Grosbach authored
      extraction. This fixes PR5998.
      
      llvm-svn: 102144
      825cb299
    • Dan Gohman's avatar
      Add an initial description of a new concept: trap values, and change · ffc9a6b4
      Dan Gohman authored
      the definition of the nsw and nuw flags to make use of it.
      
      nsw was introduced to help optimizers answer yes to the following:
      
        // Can we change i from i32 to i64 to eliminate the cast inside the loop?
        for (int i = 0; i < n; ++i) A[i] *= 0.1;
      
        // Can we assume that this loop will eventually terminate?
        for (int i = 0; i <= n; ++i) A[i] *= 0.1;
      
      In its current form, it isn't truly sufficient for either.
      
      In the first case, if the increment overflows, it'll still have some
      valid i32 value; sign-extending it will produce a value which is 33
      homogeneous sign bits trailed by 31 independent undef bits. If i is
      promoted to i64, it won't have those same values when it reaches that
      point. (The compiler could recover here by reasoning about how i is
      used by the load, but that's a lot more complicated and isn't always
      possible.)
      
      In the second case, there is no value for i which will be greater than
      n, so having the increment return undef on overflow doesn't help.
      
      Trap values are a formalization of some existing concepts that we have
      about LLVM IR, and give the optimizers a better basis for answering yes
      to both questions above.
      
      llvm-svn: 102140
      ffc9a6b4
    • Chris Lattner's avatar
      refactor the interface to InlineFunction so that most of the in/out · 4ba01ec8
      Chris Lattner authored
      arguments are handled with a new InlineFunctionInfo class.  This 
      makes it easier to extend InlineFunction to return more info in the
      future.
      
      llvm-svn: 102137
      4ba01ec8
    • Devang Patel's avatar
      Remove the test for now. · 894874e7
      Devang Patel authored
      llvm-svn: 102135
      894874e7
  2. Apr 22, 2010
Loading