Skip to content
  1. Nov 20, 2013
    • Chandler Carruth's avatar
      [PM] Add the preservation system to the new pass manager. · c0bfa8c2
      Chandler Carruth authored
      This adds a new set-like type which represents a set of preserved
      analysis passes. The set is managed via the opaque PassT::ID() void*s.
      The expected convenience templates for interacting with specific passes
      are provided. It also supports a symbolic "all" state which is
      represented by an invalid pointer in the set. This state is nicely
      saturating as it comes up often. Finally, it supports intersection which
      is used when finding the set of preserved passes after N different
      transforms.
      
      The pass API is then changed to return the preserved set rather than
      a bool. This is much more self-documenting than the previous system.
      Returning "none" is a conservatively correct solution just like
      returning "true" from todays passes and not marking any passes as
      preserved. Passes can also be dynamically preserved or not throughout
      the run of the pass, and whatever gets returned is the binding state.
      Finally, preserving "all" the passes is allowed for no-op transforms
      that simply can't harm such things.
      
      Finally, the analysis managers are changed to instead of blindly
      invalidating all of the analyses, invalidate those which were not
      preserved. This should rig up all of the basic preservation
      functionality. This also correctly combines the preservation moving up
      from one IR-layer to the another and the preservation aggregation across
      N pass runs. Still to go is incrementally correct invalidation and
      preservation across IR layers incrementally during N pass runs. That
      will wait until we have a device for even exposing analyses across IR
      layers.
      
      While the core of this change is obvious, I'm not happy with the current
      testing, so will improve it to cover at least some of the invalidation
      that I can test easily in a subsequent commit.
      
      llvm-svn: 195241
      c0bfa8c2
    • Chandler Carruth's avatar
      Give SmallPtrSet move semantics when we have R-value references. · 55758e96
      Chandler Carruth authored
      Somehow, this ADT got missed which is moderately terrifying considering
      the efficiency of move for it.
      
      The code to implement move semantics for it is pretty horrible
      currently but was written to reasonably closely match the rest of the
      code. Unittests that cover both copying and moving (at a basic level)
      added.
      
      llvm-svn: 195239
      55758e96
    • NAKAMURA Takumi's avatar
    • NAKAMURA Takumi's avatar
      Whitespace. · f2392ebb
      NAKAMURA Takumi authored
      llvm-svn: 195237
      f2392ebb
    • Elena Demikhovsky's avatar
      Fixed compilation error. · a5967af9
      Elena Demikhovsky authored
      llvm-svn: 195230
      a5967af9
    • Elena Demikhovsky's avatar
      AVX-512: Concat 4 128-bit vectors in one 512-bit vector. · e1f9bf05
      Elena Demikhovsky authored
      llvm-svn: 195229
      e1f9bf05
    • Chandler Carruth's avatar
      [PM] Make the function pass manager more regular. · d895e29e
      Chandler Carruth authored
      The FunctionPassManager is now itself a function pass. When run over
      a function, it runs all N of its passes over that function. This is the
      1:N mapping in the pass dimension only. This allows it to be used in
      either a ModulePassManager or potentially some other manager that
      works on IR units which are supersets of Functions.
      
      This commit also adds the obvious adaptor to map from a module pass to
      a function pass, running the function pass across every function in the
      module.
      
      The test has been updated to use this new pattern.
      
      llvm-svn: 195192
      d895e29e
    • Yuchen Wu's avatar
      llvm-cov: Added file checksum to gcno and gcda files. · babe7491
      Yuchen Wu authored
      Instead of permanently outputting "MVLL" as the file checksum, clang
      will create gcno and gcda checksums by hashing the destination block
      numbers of every arc. This allows for llvm-cov to check if the two gcov
      files are synchronized.
      
      Regenerated the test files so they contain the checksum. Also added
      negative test to ensure error when the checksums don't match.
      
      llvm-svn: 195191
      babe7491
    • Chandler Carruth's avatar
      [PM] Split the analysis manager into a function-specific interface and · ed1ffe01
      Chandler Carruth authored
      a module-specific interface. This is the first of many steps necessary
      to generalize the infrastructure such that we can support both
      a Module-to-Function and Module-to-SCC-to-Function pass manager
      nestings.
      
      After a *lot* of attempts that never worked and didn't even make it to
      a committable state, it became clear that I had gotten the layering
      design of analyses flat out wrong. Four days later, I think I have most
      of the plan for how to correct this, and I'm starting to reshape the
      code into it. This is just a baby step I'm afraid, but starts separating
      the fundamentally distinct concepts of function analysis passes and
      module analysis passes so that in subsequent steps we can effectively
      layer them, and have a consistent design for the eventual SCC layer.
      
      As part of this, I've started some interface changes to make passes more
      regular. The module pass accepts the module in the run method, and some
      of the constructor parameters are gone. I'm still working out exactly
      where constructor parameters vs. method parameters will be used, so
      I expect this to fluctuate a bit.
      
      This actually makes the invalidation less "correct" at this phase,
      because now function passes don't invalidate module analysis passes, but
      that was actually somewhat of a misfeature. It will return in a better
      factored form which can scale to other units of IR. The documentation
      has gotten less verbose and helpful.
      
      llvm-svn: 195189
      ed1ffe01
    • Hal Finkel's avatar
      PPC: Optimize rldicl generation for masked shifts · 22498fa6
      Hal Finkel authored
      Masking operations (where only some number of the low bits are being kept) are
      selected to rldicl(x, 0, mb). If x is a logical right shift (which would become
      rldicl(y, 64-n, n)), we might be able to fold the two instructions together:
      
        rldicl(rldicl(x, 64-n, n), 0, mb) -> rldicl(x, 64-n, mb) for n <= mb
      
      The right shift is really a left rotate followed by a mask, and if the explicit
      mask is a more-restrictive sub-mask of the mask implied by the shift, only one
      rldicl is needed.
      
      llvm-svn: 195185
      22498fa6
    • Eric Christopher's avatar
      Remove polymorphic destruction for DIE. DIEBlocks are owned elsewhere · 3262a116
      Eric Christopher authored
      and not polymorphically deleted and they are the only thing that derive
      from DIE.
      
      llvm-svn: 195183
      3262a116
    • Eric Christopher's avatar
      Remove capability for polymorphic destruction from LexicalScope · b7dee8a6
      Eric Christopher authored
      and LexicalScopes, we're not using it.
      
      llvm-svn: 195182
      b7dee8a6
    • Eric Christopher's avatar
      Grammar. · 9d7d5da6
      Eric Christopher authored
      llvm-svn: 195181
      9d7d5da6
    • Eric Christopher's avatar
      Formatting, 80-col, trailing whitespace. · 6211e4b9
      Eric Christopher authored
      llvm-svn: 195180
      6211e4b9
    • Jack Carter's avatar
      long line correction · d4b22dcb
      Jack Carter authored
      llvm-svn: 195179
      d4b22dcb
    • Jack Carter's avatar
      long line correction · 03af6d14
      Jack Carter authored
      llvm-svn: 195175
      03af6d14
    • Filip Pizlo's avatar
      Expose the fence instruction via the C API. · 0d3f7eca
      Filip Pizlo authored
      llvm-svn: 195173
      0d3f7eca
    • Aditya Nandakumar's avatar
      Fixed an extra for(typo) in the comments · c1fd0dd4
      Aditya Nandakumar authored
      llvm-svn: 195171
      c1fd0dd4
    • Jack Carter's avatar
      long lines and white space correction · 5c0af48a
      Jack Carter authored
      llvm-svn: 195170
      5c0af48a
    • David Blaikie's avatar
      DebugInfo: Partial implementation of DWARF type units. · 409dd9c3
      David Blaikie authored
      Emit DW_TAG_type_units into the debug_info section using compile unit
      headers. This is bogus/unusable by debuggers, but testable and provides
      more isolated review.
      
      Subsequent patches will include support for type unit headers and
      emission into the debug_types section, as well as comdat grouping the
      types based on their hash. Also the CompileUnit type will be renamed
      'Unit' and relevant portions pulled out into respective CompileUnit and
      TypeUnit types.
      
      llvm-svn: 195166
      409dd9c3
  2. Nov 19, 2013
Loading