Skip to content
  1. Jan 10, 2013
  2. Jan 09, 2013
  3. Jan 08, 2013
  4. Jan 07, 2013
    • Eli Bendersky's avatar
      Add the align_to_end option to .bundle_lock in the MC implementation of aligned · 802b6287
      Eli Bendersky authored
      bundling. The document describing this feature and the implementation has also
      been updated:
      
      https://sites.google.com/a/chromium.org/dev/nativeclient/pnacl/aligned-bundling-support-in-llvm
      
      llvm-svn: 171797
      802b6287
    • Jordan Rose's avatar
      Change SMRange to be half-open (exclusive end) instead of closed (inclusive) · e8f1eaea
      Jordan Rose authored
      This is necessary not only for representing empty ranges, but for handling
      multibyte characters in the input. (If the end pointer in a range refers to
      a multibyte character, should it point to the beginning or the end of the
      character in a char array?) Some of the code in the asm parsers was already
      assuming this anyway.
      
      llvm-svn: 171765
      e8f1eaea
    • Shuxin Yang's avatar
      Implement APFloat::isDenormal() · 4fb504fe
      Shuxin Yang authored
      llvm-svn: 171764
      4fb504fe
    • Quentin Colombet's avatar
      When code size is the priority (Oz, MinSize attribute), help llvm · 3b2db0bc
      Quentin Colombet authored
      turning a code like this:
      
      if (foo)
         free(foo)
      
      into that:
      free(foo)
      
      Move a call to free from basic block FB into FB's predecessor, P,
      when the path from P to FB is taken only if the argument of free is
      not equal to NULL.
      
      Some restrictions apply on P and FB to be sure that this code motion
      is profitable. Namely:
      1. FB must have only one predecessor P.
      2. FB must contain only the call to free plus an unconditional
         branch to S.
      3. P's successors are FB and S.
      
      Because of 1., we will not increase the code size when moving the call
      to free from FB to P.
      Because of 2., FB will be empty after the move.
      Because of 2. and 3., P's branch instruction becomes useless, so as FB
      (simplifycfg will do the job).
      
      llvm-svn: 171762
      3b2db0bc
    • Chandler Carruth's avatar
      dcb603fe
    • Chandler Carruth's avatar
      Move CallGraphSCCPass.h into the Analysis tree; that's where the · 839a98e6
      Chandler Carruth authored
      implementation lives already.
      
      llvm-svn: 171746
      839a98e6
    • Chandler Carruth's avatar
      Remove the long defunct 'DefaultPasses' header. We have a pass manager · 683ff2d7
      Chandler Carruth authored
      builder these days, and this thing hasn't seen updates for a very long
      time.
      
      llvm-svn: 171741
      683ff2d7
    • Chandler Carruth's avatar
      Sink AddrMode back into TargetLowering, removing one of the most · 95f83e01
      Chandler Carruth authored
      peculiar headers under include/llvm.
      
      This struct still doesn't make a lot of sense, but it makes more sense
      down in TargetLowering than it did before.
      
      llvm-svn: 171739
      95f83e01
    • Chandler Carruth's avatar
      Switch the SCEV expander and LoopStrengthReduce to use · 26c59fa8
      Chandler Carruth authored
      TargetTransformInfo rather than TargetLowering, removing one of the
      primary instances of the layering violation of Transforms depending
      directly on Target.
      
      This is a really big deal because LSR used to be a "special" pass that
      could only be tested fully using llc and by looking at the full output
      of it. It also couldn't run with any other loop passes because it had to
      be created by the backend. No longer is this true. LSR is now just
      a normal pass and we should probably lift the creation of LSR out of
      lib/CodeGen/Passes.cpp and into the PassManagerBuilder. =] I've not done
      this, or updated all of the tests to use opt and a triple, because
      I suspect someone more familiar with LSR would do a better job. This
      change should be essentially without functional impact for normal
      compilations, and only change behvaior of targetless compilations.
      
      The conversion required changing all of the LSR code to refer to the TTI
      interfaces, which fortunately are very similar to TargetLowering's
      interfaces. However, it also allowed us to *always* expect to have some
      implementation around. I've pushed that simplification through the pass,
      and leveraged it to simplify code somewhat. It required some test
      updates for one of two things: either we used to skip some checks
      altogether but now we get the default "no" answer for them, or we used
      to have no information about the target and now we do have some.
      
      I've also started the process of removing AddrMode, as the TTI interface
      doesn't use it any longer. In some cases this simplifies code, and in
      others it adds some complexity, but I think it's not a bad tradeoff even
      there. Subsequent patches will try to clean this up even further and use
      other (more appropriate) abstractions.
      
      Yet again, almost all of the formatting changes brought to you by
      clang-format. =]
      
      llvm-svn: 171735
      26c59fa8
    • NAKAMURA Takumi's avatar
      CallingConvLower.h: Use bitfields like unsigned:1 instead of bool:1 . · 2c790637
      NAKAMURA Takumi authored
      Some compilers might be confused if bool were potentially signed integer. In my case, g++-4.7.0 miscompiled CodeGen/ARM.
      
      llvm-svn: 171727
      2c790637
    • Bill Wendling's avatar
      Rough out a new c'tor for the AttrBuilder class. · 096f544e
      Bill Wendling authored
      This c'tor takes the AttributeSet class as the parameter. It will eventually
      grab the attributes from the specified index and create a new attribute builder
      with those attributes.
      
      llvm-svn: 171712
      096f544e
    • David Blaikie's avatar
      PR14759: Debug info support for C++ member pointers. · 5d3249b5
      David Blaikie authored
      This works fine with GDB for member variable pointers, but GDB's support for
      member function pointers seems to be quite unrelated to
      DW_TAG_ptr_to_member_type. (see GDB bug 14998 for details)
      
      llvm-svn: 171698
      5d3249b5
Loading