Skip to content
  1. Jan 07, 2013
    • Chandler Carruth's avatar
      Rename the VMCore unittest tree to IR. Somehow was missed when doing the · 74b6a77d
      Chandler Carruth authored
      library rename.
      
      llvm-svn: 171747
      74b6a77d
    • 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
      Remove LSR's use of the random AddrMode struct. These variables were · 6e479322
      Chandler Carruth authored
      already in a class, just inline the four of them. I suspect that this
      class could be simplified some to not always keep distinct variables for
      these things, but it wasn't clear to me how given the usage so I opted
      for a trivial and mechanical translation.
      
      This removes one of the two remaining users of a header in include/llvm
      which does nothing more than define a 4 member struct.
      
      llvm-svn: 171738
      6e479322
    • 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
    • David Tweed's avatar
      Fix a mistaken commit that included some debugging code. · 3f909375
      David Tweed authored
      llvm-svn: 171734
      3f909375
    • David Tweed's avatar
      There was a switch fall-through in the parser for textual LLVM that caused · a11edf0c
      David Tweed authored
      bogus comparison operands to default to eq/oeq. Fix that, fix a couple of
      tests that accidentally passed and test for bogus comparison opeartors
      explicitly.
      
      llvm-svn: 171733
      a11edf0c
    • Silviu Baranga's avatar
      Make the MergeGlobals pass correctly handle the address space qualifiers of... · a055aab5
      Silviu Baranga authored
      Make the MergeGlobals pass correctly handle the address space qualifiers of the global variables. We partition the set of globals by their address space, and apply the same the trasnformation as before to merge them.
      
      llvm-svn: 171730
      a055aab5
    • Dmitri Gribenko's avatar
    • NAKAMURA Takumi's avatar
      R600/SIISelLowering.cpp: Suppress a warning. [-Wunused-variable] · 458a8277
      NAKAMURA Takumi authored
      llvm-svn: 171728
      458a8277
    • 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
    • Chandler Carruth's avatar
      Simplify LoopVectorize to require target transform info and rely on it · b348328b
      Chandler Carruth authored
      being present. Make a member of one of the helper classes a reference as
      part of this.
      
      Reformatting goodness brought to you by clang-format.
      
      llvm-svn: 171726
      b348328b
    • Chandler Carruth's avatar
      Merge the unused header file for LoopVectorizer into the source file. · b7e60f68
      Chandler Carruth authored
      This makes the loop vectorizer match the pattern followed by roughly all
      other passses. =]
      
      Notably, this header file was braken in several regards: it contained
      a using namespace directive, global #define's that aren't globaly
      appropriate, and global constants defined directly in the header file.
      
      As a side benefit, lots of the types in this file become internal, which
      will cause the optimizer to chew on this pass more effectively.
      
      llvm-svn: 171723
      b7e60f68
    • Chandler Carruth's avatar
      Switch BBVectorize to directly depend on having a TTI analysis. · 7383bfd6
      Chandler Carruth authored
      This could be simplified further, but Hal has a specific feature for
      ignoring TTI, and so I preserved that.
      
      Also, I needed to use it because a number of tests fail when switching
      from a null TTI to the NoTTI nonce implementation. That seems suspicious
      to me and so may be something that you need to look into Hal. I worked
      it by preserving the old behavior for these tests with the flag that
      ignores all target info.
      
      llvm-svn: 171722
      7383bfd6
    • Tim Northover's avatar
      Add LICENSE.TXT covering contributions made by ARM. · 2883da3b
      Tim Northover authored
      Absent a Contributor's License Agreement (CLA) with an LLVM legal entity and as
      reviewed and agreed with Chris Lattner, add a patent license covering future
      contributions from ARM until there is a CLA. This is to make explicit ARM's
      grant of patent rights to recipients of LLVM containing ARM-contributed
      material.
      
      llvm-svn: 171721
      2883da3b
    • Chandler Carruth's avatar
      Fix a slew of indentation and parameter naming style issues. This 80% of · 04ece862
      Chandler Carruth authored
      this patch brought to you by the tool clang-format.
      
      I wanted to fix up the names of constructor parameters because they
      followed a bit of an anti-pattern by naming initialisms with CamelCase:
      'Tti', 'Se', etc. This appears to have been in an attempt to not overlap
      with the names of member variables 'TTI', 'SE', etc. However,
      constructor arguments can very safely alias members, and in fact that's
      the conventional way to pass in members. I've fixed all of these I saw,
      along with making some strang abbreviations such as 'Lp' be simpler 'L',
      or 'Lgl' be the word 'Legal'.
      
      However, the code I was touching had indentation and formatting somewhat
      all over the map. So I ran clang-format and fixed them.
      
      I also fixed a few other formatting or doxygen formatting issues such as
      using ///< on trailing comments so they are associated with the correct
      entry.
      
      There is still a lot of room for improvement of the formating and
      cleanliness of this code. ;] At least a few parts of the coding
      standards or common practices in LLVM's code aren't followed, the enum
      naming rules jumped out at me. I may mix some of these while I'm here,
      but not all of them.
      
      llvm-svn: 171719
      04ece862
    • Chandler Carruth's avatar
      Switch LoopIdiom pass to directly require target transform information. · 342cc255
      Chandler Carruth authored
      I'm sorry for duplicating bad style here, but I wanted to keep
      consistency. I've pinged the code review thread where this style was
      reviewed and changes were requested.
      
      llvm-svn: 171714
      342cc255
    • 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
    • Craig Topper's avatar
      ae65212a
    • David Blaikie's avatar
      8e390ea1
    • 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
    • Craig Topper's avatar
      Remove # from the beginning and end of def names. The # is a paste operator... · a8c5ec09
      Craig Topper authored
      Remove # from the beginning and end of def names. The # is a paste operator and should only be used with something to paste on either side.
      
      llvm-svn: 171697
      a8c5ec09
    • Craig Topper's avatar
      Remove # from the beginning and end of def names. · 25cdf92b
      Craig Topper authored
      llvm-svn: 171696
      25cdf92b
    • Craig Topper's avatar
      Revert r171140. We don't actually need to support #NAME. Because NAME by... · b21afc6d
      Craig Topper authored
      Revert r171140. We don't actually need to support #NAME. Because NAME by itself is interpreted just fine.
      
      llvm-svn: 171695
      b21afc6d
    • Craig Topper's avatar
      Remove unnecessary # tokens at the beginning and end of defm names. · bd62d64c
      Craig Topper authored
      llvm-svn: 171694
      bd62d64c
    • Chandler Carruth's avatar
      Make SimplifyCFG simply depend upon TargetTransformInfo and pass it · 0b4ef9ce
      Chandler Carruth authored
      through as a reference rather than a pointer. There is always *some*
      implementation of this available, so this simplifies code by not having
      to test for whether it is available or not.
      
      Further, it turns out there were piles of places where SimplifyCFG was
      recursing and not passing down either TD or TTI. These are fixed to be
      more pedantically consistent even though I don't have any particular
      cases where it would matter.
      
      llvm-svn: 171691
      0b4ef9ce
    • Chandler Carruth's avatar
      Move the initialization to the Analysis library as well as the pass. · f1f54527
      Chandler Carruth authored
      This was (somewhat distressingly) only caught be the ocaml bindings
      tests...
      
      llvm-svn: 171690
      f1f54527
    • Eric Christopher's avatar
      Update comment. · 7f5870c9
      Eric Christopher authored
      llvm-svn: 171689
      7f5870c9
    • Chandler Carruth's avatar
      Fix the enumerator names for ShuffleKind to match tho coding standards, · 2109f47d
      Chandler Carruth authored
      and make its comments doxygen comments.
      
      llvm-svn: 171688
      2109f47d
    • Chandler Carruth's avatar
      Make the popcnt support enums and methods have more clear names and · 50a36cd1
      Chandler Carruth authored
      follow the conding conventions regarding enumerating a set of "kinds" of
      things.
      
      llvm-svn: 171687
      50a36cd1
    • Chandler Carruth's avatar
      Move TargetTransformInfo to live under the Analysis library. This no · d3e73556
      Chandler Carruth authored
      longer would violate any dependency layering and it is in fact an
      analysis. =]
      
      llvm-svn: 171686
      d3e73556
    • Sean Silva's avatar
      tblgen, docs: Add initial syntax reference. · 1b600181
      Sean Silva authored
      llvm-svn: 171685
      1b600181
    • Sean Silva's avatar
      Simplify TableGen type-compatibility checks. · 93be7d59
      Sean Silva authored
      Patch by Elior Malul!
      
      llvm-svn: 171684
      93be7d59
    • Chandler Carruth's avatar
      Switch TargetTransformInfo from an immutable analysis pass that requires · 664e354d
      Chandler Carruth authored
      a TargetMachine to construct (and thus isn't always available), to an
      analysis group that supports layered implementations much like
      AliasAnalysis does. This is a pretty massive change, with a few parts
      that I was unable to easily separate (sorry), so I'll walk through it.
      
      The first step of this conversion was to make TargetTransformInfo an
      analysis group, and to sink the nonce implementations in
      ScalarTargetTransformInfo and VectorTargetTranformInfo into
      a NoTargetTransformInfo pass. This allows other passes to add a hard
      requirement on TTI, and assume they will always get at least on
      implementation.
      
      The TargetTransformInfo analysis group leverages the delegation chaining
      trick that AliasAnalysis uses, where the base class for the analysis
      group delegates to the previous analysis *pass*, allowing all but tho
      NoFoo analysis passes to only implement the parts of the interfaces they
      support. It also introduces a new trick where each pass in the group
      retains a pointer to the top-most pass that has been initialized. This
      allows passes to implement one API in terms of another API and benefit
      when some other pass above them in the stack has more precise results
      for the second API.
      
      The second step of this conversion is to create a pass that implements
      the TargetTransformInfo analysis using the target-independent
      abstractions in the code generator. This replaces the
      ScalarTargetTransformImpl and VectorTargetTransformImpl classes in
      lib/Target with a single pass in lib/CodeGen called
      BasicTargetTransformInfo. This class actually provides most of the TTI
      functionality, basing it upon the TargetLowering abstraction and other
      information in the target independent code generator.
      
      The third step of the conversion adds support to all TargetMachines to
      register custom analysis passes. This allows building those passes with
      access to TargetLowering or other target-specific classes, and it also
      allows each target to customize the set of analysis passes desired in
      the pass manager. The baseline LLVMTargetMachine implements this
      interface to add the BasicTTI pass to the pass manager, and all of the
      tools that want to support target-aware TTI passes call this routine on
      whatever target machine they end up with to add the appropriate passes.
      
      The fourth step of the conversion created target-specific TTI analysis
      passes for the X86 and ARM backends. These passes contain the custom
      logic that was previously in their extensions of the
      ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces.
      I separated them into their own file, as now all of the interface bits
      are private and they just expose a function to create the pass itself.
      Then I extended these target machines to set up a custom set of analysis
      passes, first adding BasicTTI as a fallback, and then adding their
      customized TTI implementations.
      
      The fourth step required logic that was shared between the target
      independent layer and the specific targets to move to a different
      interface, as they no longer derive from each other. As a consequence,
      a helper functions were added to TargetLowering representing the common
      logic needed both in the target implementation and the codegen
      implementation of the TTI pass. While technically this is the only
      change that could have been committed separately, it would have been
      a nightmare to extract.
      
      The final step of the conversion was just to delete all the old
      boilerplate. This got rid of the ScalarTargetTransformInfo and
      VectorTargetTransformInfo classes, all of the support in all of the
      targets for producing instances of them, and all of the support in the
      tools for manually constructing a pass based around them.
      
      Now that TTI is a relatively normal analysis group, two things become
      straightforward. First, we can sink it into lib/Analysis which is a more
      natural layer for it to live. Second, clients of this interface can
      depend on it *always* being available which will simplify their code and
      behavior. These (and other) simplifications will follow in subsequent
      commits, this one is clearly big enough.
      
      Finally, I'm very aware that much of the comments and documentation
      needs to be updated. As soon as I had this working, and plausibly well
      commented, I wanted to get it committed and in front of the build bots.
      I'll be doing a few passes over documentation later if it sticks.
      
      Commits to update DragonEgg and Clang will be made presently.
      
      llvm-svn: 171681
      664e354d
    • Michael Gottesman's avatar
      [ObjCARC Debug Message] - Added debug message when fuse a retain/autorelease... · add08474
      Michael Gottesman authored
      [ObjCARC Debug Message] - Added debug message when fuse a retain/autorelease pair in ObjCARCContract::ContractAutorelease.
      
      llvm-svn: 171679
      add08474
    • Michael Gottesman's avatar
      [ObjCARC Debug Message] - Added debug message when we zap a matching... · d61a3b27
      Michael Gottesman authored
      [ObjCARC Debug Message] - Added debug message when we zap a matching retain/autorelease pair in ObjCARCOpt::OptimizeReturns.
      
      llvm-svn: 171678
      d61a3b27
    • Michael Gottesman's avatar
      [ObjCARC Debug Message] - Added debug message when we erase ARC calls with... · 5b970e14
      Michael Gottesman authored
      [ObjCARC Debug Message] - Added debug message when we erase ARC calls with null since they are no-ops.
      
      llvm-svn: 171677
      5b970e14
    • Michael Gottesman's avatar
      [ObjCARC Debug Message] - Added debug message when we add a nounwind keyword... · 8800a51a
      Michael Gottesman authored
      [ObjCARC Debug Message] - Added debug message when we add a nounwind keyword to a function which can not throw.
      
      llvm-svn: 171676
      8800a51a
    • Michael Gottesman's avatar
      [ObjCARC Debug Message] - Added debug message when we add a tail keyword to a... · 2d76331f
      Michael Gottesman authored
      [ObjCARC Debug Message] - Added debug message when we add a tail keyword to a function which can never be passed stack args.
      
      llvm-svn: 171675
      2d76331f
Loading