Skip to content
  1. Jan 26, 2009
  2. Jan 24, 2009
  3. Jan 23, 2009
    • Gabor Greif's avatar
      Simplify the logic of getting hold of a PHI predecessor block. · eb61fcf2
      Gabor Greif authored
      There is now a direct way from value-use-iterator to incoming block in PHINode's API.
      This way we avoid the iterator->index->iterator trip, and especially the costly
      getOperandNo() invocation. Additionally there is now an assertion that the iterator
      really refers to one of the PHI's Uses.
      
      llvm-svn: 62869
      eb61fcf2
  4. Jan 21, 2009
  5. Jan 19, 2009
  6. Jan 18, 2009
    • Chris Lattner's avatar
      Fix rdar://6505632, an llc crash on 483.xalancbmk · 64b7bd7f
      Chris Lattner authored
      llvm-svn: 62470
      64b7bd7f
    • Nick Lewycky's avatar
      Fix copy and pasted typos that prevented strtok_r, realloc, getenv, ungetc, · 3ced0dfa
      Nick Lewycky authored
      putc, puts, perror, vscanf and vsscanf from getting annotations.
      
      Add annotations for eight printf functions, memalign, pread and pwrite.
      
      On Linux, llvm-gcc sometimes renames strdup, getc, putc, strtok_r, scanf and
      sscanf. Match the alternate function names.
      
      Fix a crash annotating opendir.
      
      Don't mark fsetpos's second parameter as nocapture. It's supposed to be
      captured.
      
      Do mark fopen's path and mode strings as nocapture. Mark ferror as readonly,
      but not fileno which may set errno.
      
      llvm-svn: 62456
      3ced0dfa
  7. Jan 16, 2009
  8. Jan 15, 2009
  9. Jan 14, 2009
    • Chris Lattner's avatar
      8fb9480e
    • Dale Johannesen's avatar
      Fix the time regression I introduced in 464.h264ref with · 1f0e0e7c
      Dale Johannesen authored
      my earlier patch to this file.
      
      The issue there was that all uses of an IV inside a loop
      are actually references to Base[IV*2], and there was one
      use outside that was the same but LSR didn't see the base
      or the scaling because it didn't recurse into uses outside
      the loop; thus, it used base+IV*scale mode inside the loop
      instead of pulling base out of the loop.  This was extra bad
      because register pressure later forced both base and IV into
      memory.  Doing that recursion, at least enough
      to figure out addressing modes, is a good idea in general;
      the change in AddUsersIfInteresting does this.  However,
      there were side effects....
      
      It is also possible for recursing outside the loop to
      introduce another IV where there was only 1 before (if
      the refs inside are not scaled and the ref outside is).
      I don't think this is a common case, but it's in the testsuite.
      It is right to be very aggressive about getting rid of
      such introduced IVs (CheckForIVReuse and the handling of
      nonzero RewriteFactor in StrengthReduceStridedIVUsers).
      In the testcase in question the new IV produced this way
      has both a nonconstant stride and a nonzero base, neither
      of which was handled before.  And when inserting 
      new code that feeds into a PHI, it's right to put such 
      code at the original location rather than in the PHI's 
      immediate predecessor(s) when the original location is outside 
      the loop (a case that couldn't happen before)
      (RewriteInstructionToUseNewBase); better to avoid making
      multiple copies of it in this case.
      
      Also, the mechanism for keeping SCEV's corresponding to GEP's
      no longer works, as the GEP might change after its SCEV
      is remembered, invalidating the SCEV, and we might get a bad
      SCEV value when looking up the GEP again for a later loop.  
      This also couldn't happen before, as we weren't recursing
      into GEP's outside the loop.
      
      Also, when we build an expression that involves a (possibly
      non-affine) IV from a different loop as well as an IV from
      the one we're interested in (containsAddRecFromDifferentLoop),
      don't recurse into that.  We can't do much with it and will
      get in trouble if we try to create new non-affine IVs or something.
      
      More testcases are coming.
      
      llvm-svn: 62212
      1f0e0e7c
  10. Jan 13, 2009
  11. Jan 12, 2009
  12. Jan 11, 2009
  13. Jan 09, 2009
  14. Jan 08, 2009
    • Chris Lattner's avatar
      This implements the second half of the fix for PR3290, handling · c518dfd1
      Chris Lattner authored
      loads from allocas that cover the entire aggregate.  This handles
      some memcpy/byval cases that are produced by llvm-gcc.  This triggers
      a few times in kc++ (with std::pair<std::_Rb_tree_const_iterator
      <kc::impl_abstract_phylum*>,bool>) and once in 176.gcc (with %struct..0anon).
      
      llvm-svn: 61915
      c518dfd1
  15. Jan 07, 2009
  16. Jan 06, 2009
Loading