Skip to content
  1. Nov 20, 2013
    • 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