1. Apr 02, 2021
    • Fraser Cormack's avatar
      [RISCV] Add some tests showing vsetvli cleanup opportunities · a4ac847c
      Fraser Cormack authored
      Reviewed By: craig.topper
      
      Differential Revision: https://reviews.llvm.org/D99717
      a4ac847c
    • Marek Kurdej's avatar
      [libc++] Fix build on macOS older than 10.15. · 49e5a896
      Marek Kurdej authored
      * This was introduced in D99515 that added -Wundef flag. CI run on macOS 10.15 and this problem wasn't caught before.
      49e5a896
    • Evgeniy Brevnov's avatar
      [NARY-REASSOCIATE] Support reassociation of min/max · 2388aae4
      Evgeniy Brevnov authored
      Support reassociation for min/max. With that we should be able to transform min(min(a, b), c) -> min(min(a, c), b) if min(a, c) is already available.
      
      Reviewed By: mkazantsev, lebedev.ri
      
      Differential Revision: https://reviews.llvm.org/D88287
      2388aae4
    • Roman Lebedev's avatar
      [PassManager] Run additional LICM before LoopRotate · a26f1bf6
      Roman Lebedev authored
      Loop rotation often has to perform code duplication
      from header into preheader, which introduces PHI nodes.
      
      >>! In D99204, @thopre wrote:
      >
      > With loop peeling, it is important that unnecessary PHIs be avoided or
      > it will leads to spurious peeling. One source of such PHIs is loop
      > rotation which creates PHIs for invariant loads. Those PHIs are
      > particularly problematic since loop peeling is now run as part of simple
      > loop unrolling before GVN is run, and are thus a source of spurious
      > peeling.
      >
      > Note that while some of the load can be hoisted and eventually
      > eliminated by instruction combine, this is not always possible due to
      > alignment issue. In particular, the motivating example [1] was a load
      > inside a class instance which cannot be hoisted because the `this'
      > pointer has an alignment of 1.
      >
      > [1] http://lists.llvm.org/pipermail/llvm-dev/attachments/20210312/4ce73c47/attachment.cpp
      
      Now, we could enhance LoopRotate to avoid duplicating code when not needed,
      but instead hoist loop-invariant code, but isn't that a code duplication? (*sic*)
      We have LICM, and in fact we already run it right after LoopRotation.
      
      We could try to move it to before LoopRotation,
      that is basically free from compile-time perspective:
      https://llvm-compile-time-tracker.com/compare.php?from=6c93eb4477d88af046b915bc955c03693b2cbb58&to=a4bee6d07732b1184c436da489040b912f0dc271&stat=instructions
      But, looking at stats, i think it isn't great that we would no longer do LICM after LoopRotation, in particular:
      | statistic name                                   | LoopRotate-LICM | LICM-LoopRotate |     Δ |       % | abs(%) |
      | asm-printer.EmittedInsts                         | 9015930         | 9015799         |  -131 |   0.00% |  0.00% |
      | indvars.NumElimCmp                               | 3536            | 3544            |     8 |   0.23% |  0.23% |
      | indvars.NumElimExt                               | 36725           | 36580           |  -145 |  -0.39% |  0.39% |
      | indvars.NumElimIV                                | 1197            | 1187            |   -10 |  -0.84% |  0.84% |
      | indvars.NumElimIdentity                          | 143             | 136             |    -7 |  -4.90% |  4.90% |
      | indvars.NumElimRem                               | 4               | 5               |     1 |  25.00% | 25.00% |
      | indvars.NumLFTR                                  | 29842           | 29890           |    48 |   0.16% |  0.16% |
      | indvars.NumReplaced                              | 2293            | 2227            |   -66 |  -2.88% |  2.88% |
      | indvars.NumSimplifiedSDiv                        | 6               | 8               |     2 |  33.33% | 33.33% |
      | indvars.NumWidened                               | 26438           | 26329           |  -109 |  -0.41% |  0.41% |
      | instcount.TotalBlocks                            | 1178338         | 1173840         | -4498 |  -0.38% |  0.38% |
      | instcount.TotalFuncs                             | 111825          | 111829          |     4 |   0.00% |  0.00% |
      | instcount.TotalInsts                             | 9905442         | 9896139         | -9303 |  -0.09% |  0.09% |
      | lcssa.NumLCSSA                                   | 425871          | 423961          | -1910 |  -0.45% |  0.45% |
      | licm.NumHoisted                                  | 378357          | 378753          |   396 |   0.10% |  0.10% |
      | licm.NumMovedCalls                               | 2193            | 2208            |    15 |   0.68% |  0.68% |
      | licm.NumMovedLoads                               | 35899           | 31821           | -4078 | -11.36% | 11.36% |
      | licm.NumPromoted                                 | 11178           | 11154           |   -24 |  -0.21% |  0.21% |
      | licm.NumSunk                                     | 13359           | 13587           |   228 |   1.71% |  1.71% |
      | loop-delete.NumDeleted                           | 8547            | 8402            |  -145 |  -1.70% |  1.70% |
      | loop-instsimplify.NumSimplified                  | 12876           | 11890           |  -986 |  -7.66% |  7.66% |
      | loop-peel.NumPeeled                              | 1008            | 925             |   -83 |  -8.23% |  8.23% |
      | loop-rotate.NumNotRotatedDueToHeaderSize         | 368             | 365             |    -3 |  -0.82% |  0.82% |
      | loop-rotate.NumRotated                           | 42015           | 42003           |   -12 |  -0.03% |  0.03% |
      | loop-simplifycfg.NumLoopBlocksDeleted            | 240             | 242             |     2 |   0.83% |  0.83% |
      | loop-simplifycfg.NumLoopExitsDeleted             | 497             | 20              |  -477 | -95.98% | 95.98% |
      | loop-simplifycfg.NumTerminatorsFolded            | 618             | 336             |  -282 | -45.63% | 45.63% |
      | loop-unroll.NumCompletelyUnrolled                | 11028           | 11032           |     4 |   0.04% |  0.04% |
      | loop-unroll.NumUnrolled                          | 12608           | 12529           |   -79 |  -0.63% |  0.63% |
      | mem2reg.NumDeadAlloca                            | 10222           | 10221           |    -1 |  -0.01% |  0.01% |
      | mem2reg.NumPHIInsert                             | 192110          | 192106          |    -4 |   0.00% |  0.00% |
      | mem2reg.NumSingleStore                           | 637650          | 637643          |    -7 |   0.00% |  0.00% |
      | scalar-evolution.NumBruteForceTripCountsComputed | 814             | 812             |    -2 |  -0.25% |  0.25% |
      | scalar-evolution.NumTripCountsComputed           | 283108          | 282934          |  -174 |  -0.06% |  0.06% |
      | scalar-evolution.NumTripCountsNotComputed        | 106712          | 106718          |     6 |   0.01% |  0.01% |
      | simple-loop-unswitch.NumBranches                 | 5178            | 4752            |  -426 |  -8.23% |  8.23% |
      | simple-loop-unswitch.NumCostMultiplierSkipped    | 914             | 503             |  -411 | -44.97% | 44.97% |
      | simple-loop-unswitch.NumSwitches                 | 20              | 18              |    -2 | -10.00% | 10.00% |
      | simple-loop-unswitch.NumTrivial                  | 183             | 95              |   -88 | -48.09% | 48.09% |
      
      ... but that actually regresses LICM (-12% `licm.NumMovedLoads`),
      loop-simplifycfg (`NumLoopExitsDeleted`, `NumTerminatorsFolded`),
      simple-loop-unswitch (`NumTrivial`).
      
      What if we instead have LICM both before and after LoopRotate?
      | statistic name                                | LoopRotate-LICM | LICM-LoopRotate-LICM |     Δ |       % | abs(%) |
      | asm-printer.EmittedInsts                      | 9015930         | 9014474              | -1456 |  -0.02% |  0.02% |
      | indvars.NumElimCmp                            | 3536            | 3546                 |    10 |   0.28% |  0.28% |
      | indvars.NumElimExt                            | 36725           | 36681                |   -44 |  -0.12% |  0.12% |
      | indvars.NumElimIV                             | 1197            | 1185                 |   -12 |  -1.00% |  1.00% |
      | indvars.NumElimIdentity                       | 143             | 146                  |     3 |   2.10% |  2.10% |
      | indvars.NumElimRem                            | 4               | 5                    |     1 |  25.00% | 25.00% |
      | indvars.NumLFTR                               | 29842           | 29899                |    57 |   0.19% |  0.19% |
      | indvars.NumReplaced                           | 2293            | 2299                 |     6 |   0.26% |  0.26% |
      | indvars.NumSimplifiedSDiv                     | 6               | 8                    |     2 |  33.33% | 33.33% |
      | indvars.NumWidened                            | 26438           | 26404                |   -34 |  -0.13% |  0.13% |
      | instcount.TotalBlocks                         | 1178338         | 1173652              | -4686 |  -0.40% |  0.40% |
      | instcount.TotalFuncs                          | 111825          | 111829               |     4 |   0.00% |  0.00% |
      | instcount.TotalInsts                          | 9905442         | 9895452              | -9990 |  -0.10% |  0.10% |
      | lcssa.NumLCSSA                                | 425871          | 425373               |  -498 |  -0.12% |  0.12% |
      | licm.NumHoisted                               | 378357          | 383352               |  4995 |   1.32% |  1.32% |
      | licm.NumMovedCalls                            | 2193            | 2204                 |    11 |   0.50% |  0.50% |
      | licm.NumMovedLoads                            | 35899           | 35755                |  -144 |  -0.40% |  0.40% |
      | licm.NumPromoted                              | 11178           | 11163                |   -15 |  -0.13% |  0.13% |
      | licm.NumSunk                                  | 13359           | 14321                |   962 |   7.20% |  7.20% |
      | loop-delete.NumDeleted                        | 8547            | 8538                 |    -9 |  -0.11% |  0.11% |
      | loop-instsimplify.NumSimplified               | 12876           | 12041                |  -835 |  -6.48% |  6.48% |
      | loop-peel.NumPeeled                           | 1008            | 924                  |   -84 |  -8.33% |  8.33% |
      | loop-rotate.NumNotRotatedDueToHeaderSize      | 368             | 365                  |    -3 |  -0.82% |  0.82% |
      | loop-rotate.NumRotated                        | 42015           | 42005                |   -10 |  -0.02% |  0.02% |
      | loop-simplifycfg.NumLoopBlocksDeleted         | 240             | 241                  |     1 |   0.42% |  0.42% |
      | loop-simplifycfg.NumTerminatorsFolded         | 618             | 619                  |     1 |   0.16% |  0.16% |
      | loop-unroll.NumCompletelyUnrolled             | 11028           | 11029                |     1 |   0.01% |  0.01% |
      | loop-unroll.NumUnrolled                       | 12608           | 12525                |   -83 |  -0.66% |  0.66% |
      | mem2reg.NumPHIInsert                          | 192110          | 192073               |   -37 |  -0.02% |  0.02% |
      | mem2reg.NumSingleStore                        | 637650          | 637652               |     2 |   0.00% |  0.00% |
      | scalar-evolution.NumTripCountsComputed        | 283108          | 282998               |  -110 |  -0.04% |  0.04% |
      | scalar-evolution.NumTripCountsNotComputed     | 106712          | 106691               |   -21 |  -0.02% |  0.02% |
      | simple-loop-unswitch.NumBranches              | 5178            | 5185                 |     7 |   0.14% |  0.14% |
      | simple-loop-unswitch.NumCostMultiplierSkipped | 914             | 925                  |    11 |   1.20% |  1.20% |
      | simple-loop-unswitch.NumTrivial               | 183             | 179                  |    -4 |  -2.19% |  2.19% |
      | simple-loop-unswitch.NumBranches              | 5178            | 4752                 |  -426 |  -8.23% |  8.23% |
      | simple-loop-unswitch.NumCostMultiplierSkipped | 914             | 503                  |  -411 | -44.97% | 44.97% |
      | simple-loop-unswitch.NumSwitches              | 20              | 18                   |    -2 | -10.00% | 10.00% |
      | simple-loop-unswitch.NumTrivial               | 183             | 95                   |   -88 | -48.09% | 48.09% |
      
      I.e. we end up with less instructions, less peeling, more LICM activity,
      also note how none of those 4 regressions are here. Namely:
      
      | statistic name                                   | LICM-LoopRotate | LICM-LoopRotate-LICM |     Δ |        % |   abs(%) |
      | asm-printer.EmittedInsts                         | 9015799         | 9014474              | -1325 |   -0.01% |    0.01% |
      | indvars.NumElimCmp                               | 3544            | 3546                 |     2 |    0.06% |    0.06% |
      | indvars.NumElimExt                               | 36580           | 36681                |   101 |    0.28% |    0.28% |
      | indvars.NumElimIV                                | 1187            | 1185                 |    -2 |   -0.17% |    0.17% |
      | indvars.NumElimIdentity                          | 136             | 146                  |    10 |    7.35% |    7.35% |
      | indvars.NumLFTR                                  | 29890           | 29899                |     9 |    0.03% |    0.03% |
      | indvars.NumReplaced                              | 2227            | 2299                 |    72 |    3.23% |    3.23% |
      | indvars.NumWidened                               | 26329           | 26404                |    75 |    0.28% |    0.28% |
      | instcount.TotalBlocks                            | 1173840         | 1173652              |  -188 |   -0.02% |    0.02% |
      | instcount.TotalInsts                             | 9896139         | 9895452              |  -687 |   -0.01% |    0.01% |
      | lcssa.NumLCSSA                                   | 423961          | 425373               |  1412 |    0.33% |    0.33% |
      | licm.NumHoisted                                  | 378753          | 383352               |  4599 |    1.21% |    1.21% |
      | licm.NumMovedCalls                               | 2208            | 2204                 |    -4 |   -0.18% |    0.18% |
      | licm.NumMovedLoads                               | 31821           | 35755                |  3934 |   12.36% |   12.36% |
      | licm.NumPromoted                                 | 11154           | 11163                |     9 |    0.08% |    0.08% |
      | licm.NumSunk                                     | 13587           | 14321                |   734 |    5.40% |    5.40% |
      | loop-delete.NumDeleted                           | 8402            | 8538                 |   136 |    1.62% |    1.62% |
      | loop-instsimplify.NumSimplified                  | 11890           | 12041                |   151 |    1.27% |    1.27% |
      | loop-peel.NumPeeled                              | 925             | 924                  |    -1 |   -0.11% |    0.11% |
      | loop-rotate.NumRotated                           | 42003           | 42005                |     2 |    0.00% |    0.00% |
      | loop-simplifycfg.NumLoopBlocksDeleted            | 242             | 241                  |    -1 |   -0.41% |    0.41% |
      | loop-simplifycfg.NumLoopExitsDeleted             | 20              | 497                  |   477 | 2385.00% | 2385.00% |
      | loop-simplifycfg.NumTerminatorsFolded            | 336             | 619                  |   283 |   84.23% |   84.23% |
      | loop-unroll.NumCompletelyUnrolled                | 11032           | 11029                |    -3 |   -0.03% |    0.03% |
      | loop-unroll.NumUnrolled                          | 12529           | 12525                |    -4 |   -0.03% |    0.03% |
      | mem2reg.NumDeadAlloca                            | 10221           | 10222                |     1 |    0.01% |    0.01% |
      | mem2reg.NumPHIInsert                             | 192106          | 192073               |   -33 |   -0.02% |    0.02% |
      | mem2reg.NumSingleStore                           | 637643          | 637652               |     9 |    0.00% |    0.00% |
      | scalar-evolution.NumBruteForceTripCountsComputed | 812             | 814                  |     2 |    0.25% |    0.25% |
      | scalar-evolution.NumTripCountsComputed           | 282934          | 282998               |    64 |    0.02% |    0.02% |
      | scalar-evolution.NumTripCountsNotComputed        | 106718          | 106691               |   -27 |   -0.03% |    0.03% |
      | simple-loop-unswitch.NumBranches                 | 4752            | 5185                 |   433 |    9.11% |    9.11% |
      | simple-loop-unswitch.NumCostMultiplierSkipped    | 503             | 925                  |   422 |   83.90% |   83.90% |
      | simple-loop-unswitch.NumSwitches                 | 18              | 20                   |     2 |   11.11% |   11.11% |
      | simple-loop-unswitch.NumTrivial                  | 95              | 179                  |    84 |   88.42% |   88.42% |
      
      {F15983613} {F15983615} {F15983616}
      (this is vanilla llvm testsuite + rawspeed + darktable)
      
      As an example of the code where early LICM only is bad, see:
      https://godbolt.org/z/GzEbacs4K
      
      This does have an observable compile-time regression of +~0.5% geomean
      https://llvm-compile-time-tracker.com/compare.php?from=7c5222e4d1a3a14f029e5f614c9aefd0fa505f1e&to=5d81826c3411982ca26e46b9d0aff34c80577664&stat=instructions
      but i think that's basically nothing, and there's potential that it might
      be avoidable in the future by fixing clang to produce alignment information
      on function arguments, thus making the second run unneeded.
      
      Differential Revision: https://reviews.llvm.org/D99249
      a26f1bf6
    • Vitaly Buka's avatar
      bb1e5399
    • Vitaly Buka's avatar
      f343a730
    • Martin Storsjö's avatar
      [libcxx] [test] Fix invocable tests on Windows · 28ea2184
      Martin Storsjö authored
      MSVC had a bug regarding preferring intergral conversions over
      floating conversions. This is fixed in MSVC 19.28 and newer. Clang in
      MSVC mode so far only mimics the old, buggy behaviour, but will
      hopefully soon be fixed to comply with the new behaviour too
      (see https://reviews.llvm.org/D99663).
      
      Make the negative test to use a distinctly different type,
      leaving checks for compiler specific bugs out of the libcxx test.
      
      Differential Revision: https://reviews.llvm.org/D99641
      28ea2184
    • Martin Storsjö's avatar
      [libcxx] [test] Make the condvar wait_for tests a bit more understandable. NFC. · f8013a35
      Martin Storsjö authored
      This was requested in the review of D99175; rename the "runs"
      variable to clarify what it means wrt the test, and move updating of
      it to the main function to clarify its behaviour wrt the two runs
      further.
      
      Differential Revision: https://reviews.llvm.org/D99768
      f8013a35
    • oToToT's avatar
      [clang][ItaniumMangle] Check SizeExpr for DependentSizedArrayType · a89fb293
      oToToT authored
      (PR49478)
      
      As ArrayType::ArrayType mentioned in clang/lib/AST/Type.cpp, a
      DependentSizedArrayType might not have size expression because it it
      used as the type of a dependent array of unknown bound with a dependent
      braced initializer.
      
      Thus, I add a check when mangling array of that type.
      
      This should fix https://bugs.llvm.org/show_bug.cgi?id=49478
      
      Reviewed By: Richard Smith - zygoloid
      
      Differential Revision: https://reviews.llvm.org/D99407
      a89fb293
    • Alex Zinenko's avatar
      [mlir] add memref dialect as dependent of lower-affine pass · 5d7c832e
      Alex Zinenko authored
      The lower-affine pass also processes affine load and store operations
      that get converted to load and store operations now available in the
      memref dialect. Since it produces operations from the memref dialect,
      this dialect should be registered as dependent for this pass. It is rare
      but possible to have code that doesn't have memref operations in the
      input and calls this pass.
      
      Reviewed By: mehdi_amini
      
      Differential Revision: https://reviews.llvm.org/D99720
      5d7c832e
    • Marek Kurdej's avatar
      [clang-cl] [Sema] Do not prefer integral conversion over floating-to-integral... · 2ec7f639
      Marek Kurdej authored
      [clang-cl] [Sema] Do not prefer integral conversion over floating-to-integral for MS compatibility 19.28 and higher.
      
      As of MSVC 19.28 (2019 Update 8), integral conversion is no longer preferred over floating-to-integral, and so MSVC is more standard conformant and will generate a compiler error on ambiguous call.
      Cf. https://godbolt.org/z/E8xsdqKsb.
      Initially found during the review of D99641.
      
      Reviewed By: rnk
      
      Differential Revision: https://reviews.llvm.org/D99663
      2ec7f639
    • Aaron Green's avatar
      Tweak SimpleFastHash · 08891816
      Aaron Green authored
      This change adds a SimpleFastHash64 variant of SimpleFastHash which allows call sites to specify a starting value and get a 64 bit hash in return. This allows a hash to be "resumed" with more data.
      
      A later patch needs this to be able to hash a sequence of module-relative values one at a time, rather than just a region a memory.
      
      Reviewed By: morehouse
      
      Differential Revision: https://reviews.llvm.org/D94510
      08891816
    • Christopher Di Bella's avatar
      [libcxx] adds concepts `std::totally_ordered` and `std::totally_ordered_with` · 7959d590
      Christopher Di Bella authored
      Implements parts of:
          - P0898R3 Standard Library Concepts
          - P1754 Rename concepts to standard_case for C++20, while we still can
      
      Reviewed By: Mordante
      
      Differential Revision: https://reviews.llvm.org/D98983
      7959d590
    • Wenlei He's avatar
      [CSSPGO] Skip dangling probe value when computing profile summary · c5605857
      Wenlei He authored
      Recently we switched to use InvalidProbeCount = UINT64_MAX (instead of 0) to represent dangling probe, but UINT64_MAX is not excluded when computing profile summary. This caused profile summary to produce incorrect hot/cold threshold. The change fixed it by excluding UINT64_MAX from summary builder.
      
      Differential Revision: https://reviews.llvm.org/D99788
      c5605857
    • Craig Topper's avatar
    • Samuel's avatar
      [llvm-reduce] Add header guards and fix clang-tidy warnings · 56fa1b4f
      Samuel authored
      Add header guards and fix other clang-tidy warnings in .h files.
      Also align misaligned header docs
      
      Reviewed By: aeubanks
      
      Differential Revision: https://reviews.llvm.org/D99634
      56fa1b4f
    • Craig Topper's avatar
      [RISCV] Add more nxvi64 vector intrinsic tests for RV32. NFC · 5a9a8c7c
      Craig Topper authored
      This confirms we handle most instrutions gracefully. We do
      currently fail for vslide1up and vslide1down though.
      5a9a8c7c
    • Yang Fan's avatar
      [lld][MachO] Fix -Wsign-compare warning (NFC) · d441dee5
      Yang Fan authored
      GCC warning:
      ```
      /llvm-project/lld/MachO/InputFiles.cpp:484:24: warning: comparison of integer expressions of different signedness: ‘int64_t’ {aka ‘long int’} and ‘uint64_t’ {aka ‘long unsigned int’} [-Wsign-compare]
      484 |           return value < subsectionEntry.offset;
          |                  ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      ```
      d441dee5
    • Juneyoung Lee's avatar
      [AssumeBundles] offset should be added to correctly calculate align · c6647693
      Juneyoung Lee authored
      This is a patch to fix the bug in alignment calculation (see https://reviews.llvm.org/D90529#2619492).
      
      Consider this code:
      
      ```
      call void @llvm.assume(i1 true) ["align"(i32* %a, i32 32, i32 28)]
      %arrayidx = getelementptr inbounds i32, i32* %a, i64 -1
      ; aligment of %arrayidx?
      ```
      
      The llvm.assume guarantees that `%a - 28` is 32-bytes aligned, meaning that `%a` is 32k + 28 for some k.
      Therefore `a - 4` cannot be 32-bytes aligned but the existing code was calculating the pointer as 32-bytes aligned.
      
      The reason why this happened is as follows.
      `DiffSCEV` stores `%arrayidx - %a` which is -4.
      `OffSCEV` stores the offset value of “align”, which is 28.
      `DiffSCEV` + `OffSCEV` = 24 should be used for `a - 4`'s offset from 32k, but `DiffSCEV` - `OffSCEV` = 32 was being used instead.
      
      Reviewed By: Tyker
      
      Differential Revision: https://reviews.llvm.org/D98759
      c6647693
    • Petr Hosek's avatar
      [CMake] Use append instead of set with the list · b0d286b0
      Petr Hosek authored
      This addresses an issue introduced by D99706.
      b0d286b0
    • Vitaly Buka's avatar
      83dc218c
    • Yang Fan's avatar
      [lld] Add missing header guard (NFC) · 062d4ddd
      Yang Fan authored
      062d4ddd
    • Jonas Devlieghere's avatar
      [lldb] Account for objc_debug_class_getNameRaw returning NULL · cf51bf77
      Jonas Devlieghere authored
      On macOS Catalina, calling objc_debug_class_getNameRaw on some of the
      ISA pointers returns NULL, causing us to crash and unwind before reading
      all the Objective-C classes. This does not happen on macOS Big Sur.
      Account for that possibility and skip the class when that happens.
      cf51bf77
    • Jason Molenda's avatar
      Handle all standalone combinations of LC_NOTEs w/ & w/o addr & uuid · 78a14128
      Jason Molenda authored
      Fill out ProcessMachCore::DoLoadCore to handle LC_NOTE hints with
      a UUID or with a UUID+address, and load the binary at the specified
      offset correctly.  Add tests for all four combinations.  Change
      DynamicLoaderStatic to not re-set a Section's load address in the
      Target if it's already been specified.
      
      Differential Revision: https://reviews.llvm.org/D99571
      rdar://51490545
      78a14128
    • Yang Fan's avatar
      [X86] Fix -Wunused-function warning (NFC) · bc6001ce
      Yang Fan authored
      GCC warning:
      ```
      /llvm-project/llvm/lib/Target/X86/X86ISelLowering.cpp:9212:13: warning: ‘bool isHorizOp(unsigned int)’ defined but not used [-Wunused-function]
       9212 | static bool isHorizOp(unsigned Opcode) {
            |             ^~~~~~~~~
      ```
      bc6001ce
    • Vitaly Buka's avatar
      [NFC][scudo] Move globals into related test · 88a1529e
      Vitaly Buka authored
      88a1529e
    • Chen Zheng's avatar
      [debug-info][XCOFF] set `-gno-column-info` by default for DBX · f026e1f5
      Chen Zheng authored
      For DBX, it does not handle column info well. Set -gno-column-info
      by default for DBX.
      
      Reviewed By: dblaikie
      
      Differential Revision: https://reviews.llvm.org/D99703
      f026e1f5
    • Aart Bik's avatar
      [mlir][sparse] support for very narrow index and pointer types · a0c5b7e3
      Aart Bik authored
      Rationale:
      Small indices and values, when allowed by the required range of the
      input tensors, can reduce the memory footprint of sparse tensors
      even more. Note, however, that we must be careful zero extending
      the values (since sparse tensors never use negatives for indexing),
      but LLVM treats the index type as signed in most memory operations
      (like the scatter and gather). This CL dots all the i's in this regard.
      
      Reviewed By: bixia
      
      Differential Revision: https://reviews.llvm.org/D99777
      a0c5b7e3
    • Tony's avatar
      [NFC][AMDGPU] Add product names for gfx908 and gfx10 processors · 4c70f56e
      Tony authored
      Reviewed By: msearles
      
      Differential Revision: https://reviews.llvm.org/D99781
      4c70f56e
    • Philip Reames's avatar
      [indvars[ Fix pr49802 by checking for SCEVCouldNotCompute · 91790c67
      Philip Reames authored
      The code is assuming that having an exact exit count for the loop implies that exit counts for every exit are known.  This used to be true, but when we added handling for dead exits we broke this invariant.  The new invariant is that an exact loop count implies that any exits non trivially dead have exit counts.
      
      We could have fixed this by either a) explicitly checking for a dead exit, or b) just testing for SCEVCouldNotCompute.  I chose the second as it was simpler.
      
      (Debugging this took longer than it should have since I'd mistyped the original assert and it wasn't checking what it was meant to...)
      
      p.s. Sorry for the lack of test case.  Getting things into a state to actually hit this is difficult and fragile.  The original repro involves loop-deletion leaving SCEV in a slightly inprecise state which lets us bypass other transforms in IndVarSimplify on the way to this one.  All of my attempts to separate it into a standalone test failed.
      91790c67
    • Alexander Shaposhnikov's avatar
      [lld][MachO] Make emitEndFunStab independent from .subsections_via_symbols · f6ad0453
      Alexander Shaposhnikov authored
      This diff addresses FIXME in SyntheticSections.cpp and removes
      the dependency of emitEndFunStab on .subsections_via_symbols.
      
      Test plan: make check-lld-macho
      
      Differential revision: https://reviews.llvm.org/D99054
      f6ad0453
    • Vitaly Buka's avatar
      7af9b03c
    • Daniel Rodríguez Troitiño's avatar
      [TextAPI] Add support for arm64_32 · f5c9db97
      Daniel Rodríguez Troitiño authored
      Add a new architecture definition for arm64_32. The change should allow
      the new architecture arm64_32 to be recognized in several pieces of
      code, TextAPI parsing one of them. llvm-lipo will also recognize the
      architecture and will allow lipoing files with this architecture without
      failing.
      
      Includes a small test that the architecture is recognized by llvm-nm.
      
      Reviewed By: cishida
      
      Differential Revision: https://reviews.llvm.org/D99673
      f5c9db97
    • Daniel Rodríguez Troitiño's avatar
      [builtins] Build for arm64_32 for watchOS (Darwin) · 813e7249
      Daniel Rodríguez Troitiño authored
      Trying to build the builtins code fails because `arm64_32_SOURCES` is
      missing. Setting it to the same list used for `aarch64_SOURCES` solves
      that problem and allow the builtins to compile for that architecture.
      
      Additionally, arm64_32 is added as a possible architecture for watchos
      platforms.
      
      Reviewed By: compnerd
      
      Differential Revision: https://reviews.llvm.org/D99690
      813e7249
    • Craig Topper's avatar
    • peter klausler's avatar
      [flang] Disable some new unit tests (non-portable results) · 27341623
      peter klausler authored
      Due to architectural variation on the C++ functions std::ceil, std::floor,
      and std::trunc, diable some new Fortran unit tests for now that depending
      on specifical results for IEEE floating-point edge cases of infinities
      and NaNs.
      27341623
    • Thomas Preud'homme's avatar
      [MIPS, test] Fix use of undef FileCheck var · 5379f1c9
      Thomas Preud'homme authored
      LLVM test CodeGen/Mips/sr1.ll tries to check for the absence of a
      sequence of instructions with several CHECK-NOT with one of those
      directives using a variable defined in another. However CHECK-NOT are
      checked independently so that is using a variable defined in a pattern
      that should not occur in the input.
      
      This commit removes the definition and uses of variable to check each
      line independently, making the check stronger than the current one.
      
      Reviewed By: dsanders
      
      Differential Revision: https://reviews.llvm.org/D99776
      5379f1c9
    • Daniel Sanders's avatar
      Revert "[globalisel][unittests] Rename setUp() to avoid potential mix up with SetUp() from gtest" · 42a84d22
      Daniel Sanders authored
      Forgot to apply commit message changes from phabricator
      
      This reverts commit 3a016e31.
      42a84d22
    • Daniel Sanders's avatar
      [globalisel][unittests] Rename setUp() to avoid potential mix up with SetUp() from gtest · 3a016e31
      Daniel Sanders authored
      Also, make it structurally required so it can't be forgotten and re-introduce
      the bug that led to the rotten green tests.
      
      Differential Revision: https://reviews.llvm.org/D99692
      3a016e31
    • Thomas Preud'homme's avatar
      [OpenMP, test] Fix use of undef VAR_PRIV FileCheck var · 2c3db733
      Thomas Preud'homme authored
      Remove the CHECK-NOT directive referring to as-of-yet undefined VAR_PRIV
      variable since the pattern of the following CHECK-NOT in the same
      CHECK-NOT block covers a superset of the case caught by the first
      CHECK-NOT.
      
      Reviewed By: ABataev
      
      Differential Revision: https://reviews.llvm.org/D99775
      2c3db733