Skip to content
  1. Jul 01, 2017
  2. Jun 30, 2017
    • David L. Jones's avatar
      [lit] Factor out listdir logic shared by different test formats. · 13f0fac1
      David L. Jones authored
      Summary:
      The lit test formats use largely the same logic for discovering tests. There are
      some superficial differences in the logic, which seem reasonable enough to
      handle in a single routine.
      
      At a high level, the common goal is "look for files that end with one of these
      suffixes, and skip anything starting with a dot." The balance of the logic
      specific to ShTest and GoogleTest collapses quite a bit, so that
      getTestsInDirectory is only a couple of lines around a call to the new function.
      
      Reviewers: zturner, MatzeB, modocache
      
      Subscribers: sanjoy, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34855
      
      llvm-svn: 306895
      13f0fac1
    • Jakub Kuderski's avatar
      [Dominators] Teach IDF to use level information · c0087799
      Jakub Kuderski authored
      Summary: This patch teaches IteratedDominanceFrontier to use the level information stored in DomTreeNodes instead of calculating it manually.
      
      Reviewers: dberlin, sanjoy, davide
      
      Reviewed By: davide
      
      Subscribers: davide, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34703
      
      llvm-svn: 306894
      c0087799
    • Jakub Kuderski's avatar
      [Dominators] Add NearestCommonDominator verification · 3214633e
      Jakub Kuderski authored
      Summary:
      This patch adds another verification function for checking correctness of findNearestCommonDominator.
      For every edge from U to V in the input graph, `NCD(U, V) == IDom(V) or V` -- the new function checks this condition.
      
      Reviewers: dberlin, sanjoy, chandlerc
      
      Reviewed By: dberlin
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34575
      
      llvm-svn: 306893
      3214633e
    • Jakub Kuderski's avatar
      [Dominators] Keep tree level in DomTreeNode and use it to find NCD and answer dominance queries · b88303a2
      Jakub Kuderski authored
      Summary:
      This patch makes DomTreeNodes keep their level (depth) in the DomTree. By having this information always available, it is possible to speedup and simplify findNearestCommonDominator and certain dominance queries.
      
      In the future, level information will be also needed to perform incremental updates.
      
      My testing doesn't show any noticeable performance differences after applying this patch. There may be some improvements when other passes are thought to use the level information.
      
      Reviewers: dberlin, sanjoy, chandlerc, grosser
      
      Reviewed By: dberlin
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34548
      
      llvm-svn: 306892
      b88303a2
    • Zachary Turner's avatar
      Remove spurious semicolons. · de6a9796
      Zachary Turner authored
      llvm-svn: 306891
      de6a9796
    • Zachary Turner's avatar
      [llvm-pdbutil] Output the symbol offset when dumping. · af8c75a8
      Zachary Turner authored
      Type records have a unique type index, but symbol records do
      not.  Instead, symbol records refer to other symbol records
      by referencing their offset in the symbol stream.  In a sense
      this is the analogue of the TypeIndex, but we are not printing
      it in the dumper.  Printing it not only gives us more useful
      information when manually investigating the contents of a PDB,
      but also allows us to write better tests by enabling us to
      verify that fields that reference other symbol records do
      so correctly.
      
      Differential Revision: https://reviews.llvm.org/D34906
      
      llvm-svn: 306890
      af8c75a8
    • Reid Kleckner's avatar
      [codeview] Use the first valid source location at the top of every MBB · 45a74620
      Reid Kleckner authored
      If the instructions at the beginning of the block have no location,
      we're better off using the location of the first instruction in the
      current basic block. At the very least, that instruction post-dominates
      this one, whereas if we don't emit a .cv_loc directive, we end up using
      the potentially invalid location that falls through from the previous
      block.
      
      We could probably do better here by emitting some kind of ".cv_loc end"
      directive that stops the line table entry of the previous .cv_loc
      directive from bleeding out of its basic block. This would improve the
      line table when an entire MBB has no valid location info.
      
      llvm-svn: 306889
      45a74620
    • Krzysztof Parzyszek's avatar
      [Hexagon] Implement frame pointer elimination with -fomit-frame-pointer · 9eb75c45
      Krzysztof Parzyszek authored
      It applies to leaf functions that are otherwise not required to have
      a frame pointer.
      
      llvm-svn: 306888
      9eb75c45
    • Dinar Temirbulatov's avatar
      [SLPVectorizer] Add isOdd() helper function, NFCI. · 2fb1075f
      Dinar Temirbulatov authored
      llvm-svn: 306887
      2fb1075f
    • Craig Topper's avatar
      [InstCombine] Replace an unnecessary use of a matcher with just an isa and a cast. NFC · bcf511c0
      Craig Topper authored
      We aren't looking through any levels of IR here so I don't think we need the power of a matcher or the temporary variable it requires.
      
      llvm-svn: 306885
      bcf511c0
    • Ayal Zaks's avatar
      [LV] Sink casts to unravel first order recurrence · 2ff59d43
      Ayal Zaks authored
      Check if a single cast is preventing handling a first-order-recurrence Phi,
      because the scheduling constraints it imposes on the first-order-recurrence
      shuffle are infeasible; but they can be made feasible by moving the cast
      downwards. Record such casts and move them when vectorizing the loop.
      
      Differential Revision: https://reviews.llvm.org/D33058
      
      llvm-svn: 306884
      2ff59d43
    • Vedant Kumar's avatar
      [Profile] Do not assign counters to functions without bodies · 33d0a1cc
      Vedant Kumar authored
      The root cause of the issues reported in D32406 and D34680 is that clang
      instruments functions without bodies. Make it stop doing that, and also
      teach it how to use old (incorrectly generated) profiles without
      crashing.
      
      llvm-svn: 306883
      33d0a1cc
    • Vedant Kumar's avatar
      Fix a typo. NFC. · c4ad4138
      Vedant Kumar authored
      llvm-svn: 306882
      c4ad4138
    • Richard Smith's avatar
      Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR · 25639842
      Richard Smith authored
      This is a short-term fix for PR33650 aimed to get the modules build bots green again.
      
      Remove all the places where we use the LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
      macros to try to locally specialize a global template for a global type. That's
      not how C++ works.
      
      Instead, we now centrally define how to format vectors of fundamental types and
      of string (std::string and StringRef). We use flow formatting for the former
      cases, since that's the obvious right thing to do; in the latter case, it's
      less clear what the right choice is, but flow formatting is really bad for some
      cases (due to very long strings), so we pick block formatting. (Many of the
      cases that were using flow formatting for strings are improved by this change.)
      
      Other than the flow -> block formatting change for some vectors of strings,
      this should result in no functionality change.
      
      Differential Revision: https://reviews.llvm.org/D34907
      
      Corresponding LLVM change is r306878.
      
      llvm-svn: 306881
      25639842
    • Richard Smith's avatar
      Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR · 4451cb63
      Richard Smith authored
      This is a short-term fix for PR33650 aimed to get the modules build bots green again.
      
      Remove all the places where we use the LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
      macros to try to locally specialize a global template for a global type. That's
      not how C++ works.
      
      Instead, we now centrally define how to format vectors of fundamental types and
      of string (std::string and StringRef). We use flow formatting for the former
      cases, since that's the obvious right thing to do; in the latter case, it's
      less clear what the right choice is, but flow formatting is really bad for some
      cases (due to very long strings), so we pick block formatting. (Many of the
      cases that were using flow formatting for strings are improved by this change.)
      
      Other than the flow -> block formatting change for some vectors of strings,
      this should result in no functionality change.
      
      Differential Revision: https://reviews.llvm.org/D34907
      
      Corresponding LLVM change is r306878.
      
      llvm-svn: 306880
      4451cb63
    • Richard Smith's avatar
      Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR · 02c3baaa
      Richard Smith authored
      This is a short-term fix for PR33650 aimed to get the modules build bots green again.
      
      Remove all the places where we use the LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
      macros to try to locally specialize a global template for a global type. That's
      not how C++ works.
      
      Instead, we now centrally define how to format vectors of fundamental types and
      of string (std::string and StringRef). We use flow formatting for the former
      cases, since that's the obvious right thing to do; in the latter case, it's
      less clear what the right choice is, but flow formatting is really bad for some
      cases (due to very long strings), so we pick block formatting. (Many of the
      cases that were using flow formatting for strings are improved by this change.)
      
      Other than the flow -> block formatting change for some vectors of strings,
      this should result in no functionality change.
      
      Differential Revision: https://reviews.llvm.org/D34907
      
      Corresponding LLVM change is r306878.
      
      llvm-svn: 306879
      02c3baaa
    • Richard Smith's avatar
      Fix ODR violations due to abuse of LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR · d0c0c134
      Richard Smith authored
      This is a short-term fix for PR33650 aimed to get the modules build bots green again.
      
      Remove all the places where we use the LLVM_YAML_IS_(FLOW_)?SEQUENCE_VECTOR
      macros to try to locally specialize a global template for a global type. That's
      not how C++ works.
      
      Instead, we now centrally define how to format vectors of fundamental types and
      of string (std::string and StringRef). We use flow formatting for the former
      cases, since that's the obvious right thing to do; in the latter case, it's
      less clear what the right choice is, but flow formatting is really bad for some
      cases (due to very long strings), so we pick block formatting. (Many of the
      cases that were using flow formatting for strings are improved by this change.)
      
      Other than the flow -> block formatting change for some vectors of strings,
      this should result in no functionality change.
      
      Differential Revision: https://reviews.llvm.org/D34907
      
      Corresponding updates to clang, clang-tools-extra, and lld to follow.
      
      llvm-svn: 306878
      d0c0c134
    • Sumanth Gundapaneni's avatar
      [Hexagon] Guard the generation of lookup table · d2dd79bf
      Sumanth Gundapaneni authored
      The llvm flag "-hexagon-emit-lookup-tables" guards the generation
      of lookup table generated from a switch statement.
      Differential Revision: https://reviews.llvm.org/D34819
      
      llvm-svn: 306877
      d2dd79bf
    • Ulrich Weigand's avatar
      [SystemZ] Add all remaining instructions · 03ab2e2b
      Ulrich Weigand authored
      This adds all remaining instructions that were still missing, mostly
      privileged and semi-privileged system-level instructions.  These are
      provided for use with the assembler and disassembler only.
      
      This brings the LLVM assembler / disassembler to parity with the
      GNU binutils tools.
      
      llvm-svn: 306876
      03ab2e2b
    • Tim Northover's avatar
      GlobalISel: add G_IMPLICIT_DEF instruction. · ff5e7e12
      Tim Northover authored
      It looks like there are two target-independent but not GISel instructions that
      need legalization, IMPLICIT_DEF and PHI. These are already anomalies since
      their operands have important LLTs attached, so to make things more uniform it
      seems like a good idea to add generic variants. Starting with G_IMPLICIT_DEF.
      
      llvm-svn: 306875
      ff5e7e12
    • Francois Ferrand's avatar
      clang-format: add options to merge empty record body · ad72256d
      Francois Ferrand authored
      Summary:
      This patch introduces a few extra BraceWrapping options, similar to
      `SplitEmptyFunction`, to allow merging empty 'record' bodies (e.g.
      class, struct, union and namespace):
      * SplitEmptyClass
      * SplitEmptyStruct
      * SplitEmptyUnion
      * SplitEmptyNamespace
      
      The `SplitEmptyFunction` option name has also been simplified/
      shortened (from `SplitEmptyFunctionBody`).
      
      These options are helpful when the correspond AfterXXX option is
      enabled, to allow merging the empty record:
      
        class Foo
        {};
      
      In addition, this fixes an unexpected merging of short records, when
      the AfterXXXX options are used, which caused to be formatted like
      this:
      
        class Foo
        { void Foo(); };
      
      This is now properly formatted as:
      
        class Foo
        {
           void Foo();
        };
      
      Reviewers: djasper, krasimir
      
      Reviewed By: djasper
      
      Subscribers: cfe-commits, klimek
      
      Differential Revision: https://reviews.llvm.org/D34395
      
      llvm-svn: 306874
      ad72256d
    • Benjamin Kramer's avatar
      [clang-rename] Just return instead of calling exit(3) from main. · 1fec6cbe
      Benjamin Kramer authored
      llvm-svn: 306873
      1fec6cbe
    • Sumanth Gundapaneni's avatar
      [Hexagon] Emit jump tables in text section based on a flag · 8c5d5955
      Sumanth Gundapaneni authored
      This patch adds a new LLVM flag -hexagon-emit-jt-text which is defaulted to 
      "false". The value "true" emits the switch generated jump tables in text section.
      Differential Revision: https://reviews.llvm.org/D34820
      
      llvm-svn: 306872
      8c5d5955
    • Sumanth Gundapaneni's avatar
      Revert "[Hexagon] Guard the generation of lookup table" · 19b74203
      Sumanth Gundapaneni authored
          
      This reverts commit ae521f4192c3ed0202c047fec993cb59133dd1a0.
      Wrong commit message
      
      llvm-svn: 306871
      19b74203
    • Sumanth Gundapaneni's avatar
      [Hexagon] Guard the generation of lookup table · cf73758d
      Sumanth Gundapaneni authored
      The llvm flag "-hexagon-emit-lookup-tables" guards the generation
      of lookup table from a switch statement.
      
      Differential Revision: https://reviews.llvm.org/D34819
      
      llvm-svn: 306869
      cf73758d
    • Francois Ferrand's avatar
      clang-format: Do not binpack initialization lists · d2130f51
      Francois Ferrand authored
      Summary:
      This patch tries to avoid binpacking when initializing lists/arrays, to allow things like:
      
        static int types[] = {
            registerType1(),
            registerType2(),
            registerType3(),
        };
        std::map<int, std::string> x = {
            { 0, "foo fjakfjaklf kljj" },
            { 1, "bar fjakfjaklf kljj" },
            { 2, "stuff fjakfjaklf kljj" },
        };
      
      This is similar to how dictionnaries are formatted, and actually corresponds to the same conditions: when initializing a container (and not just 'calling' a constructor).
      
      Such formatting involves 2 things:
      * Line breaks around the content of the block. This can be forced by adding a comma or comment after the last element
      * Elements should not be binpacked
      
      This patch considers the block is an initializer list if it either ends with a comma, or follows an assignment, which seems to provide a sensible approximation.
      
      Reviewers: krasimir, djasper
      
      Reviewed By: djasper
      
      Subscribers: malcolm.parsons, klimek, cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D34238
      
      llvm-svn: 306868
      d2130f51
    • Sumanth Gundapaneni's avatar
      [SimplifyCFG] Update the name of switch generated lookup table. · 5372f0a7
      Sumanth Gundapaneni authored
      This patch appends the name of the function to the switch generated lookup
      table. This will ease the visual debugging in identifying the function the table
      is generated from.
      
      Differential Revision: https://reviews.llvm.org/D34817
      
      llvm-svn: 306867
      5372f0a7
    • Brian Gesiak's avatar
      [ORE] Remove old "diagnostic hotness" spelling · bbdc1c7d
      Brian Gesiak authored
      Summary:
      Depends on https://reviews.llvm.org/D34865.
      
      With the Clang uses of the old spelling having been removed in
      https://reviews.llvm.org/D34865, get rid of the old "diagnostic hotness"
      spellings in favor of the new "diagnostics hotness".
      
      Reviewers: anemet, davidxl
      
      Reviewed By: anemet
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D34866
      
      llvm-svn: 306866
      bbdc1c7d
Loading