Skip to content
  1. May 11, 2020
    • Sergey Dmitriev's avatar
      [Attributor] Fix for a crash on RAUW when rewriting function signature · 3df40007
      Sergey Dmitriev authored
      Reviewers: jdoerfert, sstefan1, uenoku
      
      Reviewed By: uenoku
      
      Subscribers: hiraditya, uenoku, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D79680
      3df40007
    • Tyker's avatar
      [AssumeBundles] fix crashes · 78d85c20
      Tyker authored
      Summary:
      this patch fixe crash/asserts found in the test-suite.
      the AssumeptionCache cannot be assumed to have all assumes contrary to what i tought.
      prevent generation of information for terminators, because this can create broken IR in transfromation where we insert the new terminator before removing the old one.
      
      Reviewers: jdoerfert
      
      Reviewed By: jdoerfert
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D79458
      78d85c20
    • OCHyams's avatar
      [NFC][DwarfDebug] Add test for variables with a single location which · da100de0
      OCHyams authored
      don't span their entire scope.
      
      The previous commit (6d1c40c1) is an older version of the test.
      
      Reviewed By: aprantl, vsk
      
      Differential Revision: https://reviews.llvm.org/D79573
      da100de0
    • Xun Li's avatar
      Remove an unused Module param · 44e5aaf9
      Xun Li authored
      Summary:
      In D65848 the function getFuncNameInModule was refactored to no longer use module.
      This diff removes the parameter and rename the function name to avoid confusion.
      
      Reviewers: wenlei, wmi, davidxl
      
      Reviewed By: wenlei
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D79310
      44e5aaf9
    • Johannes Doerfert's avatar
      [Attributor] Merge the query set into AbstractAttribute · 3a8740bd
      Johannes Doerfert authored
      The old QuerriedAAs contained two vectors, one for required one for
      optional dependences (=queries). We now use a single vector and encode
      the kind directly in the pointer.
      
      This reduces memory consumption and makes the connection between
      abstract attributes and their dependences clearer.
      
      No functional change is intended, changes in the test are due to
      different order in the query map. Neither the order before nor now is in
      any way special.
      
      ---
      
      Single run of the Attributor module and then CGSCC pass (oldPM)
      for SPASS/clause.c (~10k LLVM-IR loc):
      
      Before:
      ```
      calls to allocation functions: 543734 (329735/s)
      temporary memory allocations: 105895 (64217/s)
      peak heap memory consumption: 19.19MB
      peak RSS (including heaptrack overhead): 102.26MB
      total memory leaked: 269.10KB
      ```
      
      After:
      ```
      calls to allocation functions: 513292 (341511/s)
      temporary memory allocations: 106028 (70544/s)
      peak heap memory consumption: 13.35MB
      peak RSS (including heaptrack overhead): 95.64MB
      total memory leaked: 269.10KB
      ```
      
      Difference:
      ```
      calls to allocation functions: -30442 (208506/s)
      temporary memory allocations: 133 (-910/s)
      peak heap memory consumption: -5.84MB
      peak RSS (including heaptrack overhead): 0B
      total memory leaked: 0B
      ```
      
      ---
      
      Reviewed By: uenoku
      
      Differential Revision: https://reviews.llvm.org/D78729
      3a8740bd
    • Johannes Doerfert's avatar
      [Attributor][FIX] Carefully handle/ignore/forget `argmemonly` · 5e06b251
      Johannes Doerfert authored
      When we have an existing `argmemonly` or `inaccessiblememorargmemonly`
      we used to "know" that information. However, interprocedural constant
      propagation can invalidate these attributes. We now ignore and remove
      these attributes for internal functions (which may be affected by IP
      constant propagation), if we are deriving new attributes for the
      function.
      5e06b251
    • Johannes Doerfert's avatar
      [Attributor] Use "simplify to constant" in genericValueTraversal · 713ee3aa
      Johannes Doerfert authored
      As we replace values with constants interprocedurally, we also need to
      do this "look-through" step during the generic value traversal or we
      would derive properties from replaced values. While this is often not
      problematic, it is when we use the "kind" of a value for reasoning,
      e.g., accesses to arguments allow `argmemonly`.
      713ee3aa
    • Johannes Doerfert's avatar
      [Attributor] Ignore illegal accesses to `null` · 513ac6e9
      Johannes Doerfert authored
      When we categorize a pointer value we bailed at `null` before. If we
      know `null` is not a valid memory location we can ignore it as there
      won't be an access at all.
      513ac6e9
    • Johannes Doerfert's avatar
      [Attributor] Use existing helpers to determine IR facts · 31c03b92
      Johannes Doerfert authored
      We now use getPointerDereferenceableBytes to determine `nonnull` and
      `dereferenceable` facts from the IR. We also use getPointerAlignment in
      AAAlign for the same reason. The latter can interfere with callbacks so
      we do restrict it to non-function-pointers for now.
      31c03b92
    • Johannes Doerfert's avatar
      a9ee8b49
    • Fangrui Song's avatar
      [gcov] Default coverage version to '407*' and delete CC1 option -coverage-cfg-checksum · 25544ce2
      Fangrui Song authored
      Defaulting to -Xclang -coverage-version='407*' makes .gcno/.gcda
      compatible with gcov [4.7,8)
      
      In addition, delete clang::CodeGenOptionsBase::CoverageExtraChecksum and GCOVOptions::UseCfgChecksum.
      We can infer the information from the version.
      
      With this change, .gcda files produced by `clang --coverage a.o` linked executable can be read by gcov 4.7~7.
      We don't need other -Xclang -coverage* options.
      There may be a mismatching version warning, though.
      
      (Note, GCC r173147 "split checksum into cfg checksum and line checksum"
       made gcov 4.7 incompatible with previous versions.)
      25544ce2
  2. May 10, 2020
  3. May 09, 2020
  4. May 08, 2020
  5. May 07, 2020
    • Alina Sbirlea's avatar
      [SimpleLoopUnswitch] Update DefaultExit condition to check unreachable is not empty. · 6227f021
      Alina Sbirlea authored
      Summary:
      Update the check for the default exit block to not only check that the
      terminator is not unreachable, but also check that unreachable block has
      *only* the unreachable instruction.
      
      Reviewers: chandlerc
      
      Subscribers: hiraditya, uabelho, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D78277
      6227f021
    • Huihui Zhang's avatar
      [InstCombine][SVE] Fix visitExtractElementInst for scalable type. · 1ec0cc0f
      Huihui Zhang authored
      Summary:
      This patch fix the following issues with visitExtractElementInst:
      
            1. Restrict VectorUtils::findScalarElement to fixed-length vector.
               For scalable type, the number of elements in shuffle mask is
               unknown at compile-time.
            2. Fix out-of-range calculation for fixed-length vector.
            3. Skip scalable type when analysis rely on fixed number of elements.
            4. Add unit tests to check functionality of extractelement for scalable type.
      
      Reviewers: sdesmalen, efriedma, spatel, nikic
      
      Reviewed By: efriedma
      
      Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D78267
      1ec0cc0f
    • Huihui Zhang's avatar
      [InstCombine][SVE] Fix visitInsertElementInst for scalable type. · 08c9c137
      Huihui Zhang authored
      Summary:
      This patch fixes the following issues in visitInsertElementInst:
      
            1. Bail out for scalable type when analysis requires fixed size number of vector elements.
            2. Use cast<FixedVectorType> to get vector number of elements. This ensure assertion
                on scalable vector type.
            3. For scalable type, avoid folding a chain of insertelement into splat:
                  insertelt(insertelt(insertelt(insertelt X, %k, 0), %k, 1), %k, 2) ...
                    ->
                  shufflevector(insertelt(X, %k, 0), undef, zero)
                The length of scalable vector is unknown at compile-time, therefore we don't know if
                given insertelement sequence is valid for splat.
      
      Reviewers: sdesmalen, efriedma, spatel, nikic
      
      Reviewed By: sdesmalen, efriedma
      
      Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D78895
      08c9c137
Loading