1. Apr 07, 2020
    • Florian Hahn's avatar
      [SCCP] Use ranges for predicate info conditions. · 6aabb109
      Florian Hahn authored
      This patch updates the code that deals with conditions from predicate
      info to make use of constant ranges.
      
      For ssa_copy instructions inserted by PredicateInfo, we have 2 ranges:
      1. The range of the original value.
      2. The range imposed by the linked condition.
      
      1. is known, 2. can be determined using makeAllowedICmpRegion. The
      intersection of those ranges is the range for the copy.
      
      With this patch, we get a nice increase in the number of instructions
      eliminated by both SCCP and IPSCCP for some benchmarks:
      
      For MultiSource, SPEC2000 & SPEC2006:
      
      Tests: 237
      Same hash: 170 (filtered out)
      Remaining: 67
      Metric: sccp.NumInstRemoved
      Program                                        base    patch   diff
       test-suite...Source/Benchmarks/sim/sim.test    10.00   71.00  610.0%
       test-suite...CFP2000/177.mesa/177.mesa.test   361.00  1626.00 350.4%
       test-suite...encode/alacconvert-encode.test   141.00  602.00  327.0%
       test-suite...decode/alacconvert-decode.test   141.00  602.00  327.0%
       test-suite...CI_Purple/SMG2000/smg2000.test   1639.00 4093.00 149.7%
       test-suite...peg2/mpeg2dec/mpeg2decode.test    75.00  163.00  117.3%
       test-suite...T2006/401.bzip2/401.bzip2.test   358.00  513.00  43.3%
       test-suite...rks/FreeBench/pifft/pifft.test    11.00   15.00  36.4%
       test-suite...langs-C/unix-tbl/unix-tbl.test     4.00    5.00  25.0%
       test-suite...lications/sqlite3/sqlite3.test   541.00  667.00  23.3%
       test-suite.../CINT2000/254.gap/254.gap.test   243.00  299.00  23.0%
       test-suite...ks/Prolangs-C/agrep/agrep.test    25.00   29.00  16.0%
       test-suite...marks/7zip/7zip-benchmark.test   1135.00 1304.00 14.9%
       test-suite...lications/ClamAV/clamscan.test   1105.00 1268.00 14.8%
       test-suite...urce/Applications/lua/lua.test   398.00  436.00   9.5%
      
      Metric: sccp.IPNumInstRemoved
      Program                                        base   patch   diff
       test-suite...C/CFP2000/179.art/179.art.test     1.00   3.00  200.0%
       test-suite...006/447.dealII/447.dealII.test   429.00 1056.00 146.2%
       test-suite...nch/fourinarow/fourinarow.test     3.00   7.00  133.3%
       test-suite...CI_Purple/SMG2000/smg2000.test   818.00 1748.00 113.7%
       test-suite...ks/McCat/04-bisect/bisect.test     3.00   5.00  66.7%
       test-suite...CFP2000/177.mesa/177.mesa.test   165.00 255.00  54.5%
       test-suite...ediabench/gsm/toast/toast.test    18.00  27.00  50.0%
       test-suite...telecomm-gsm/telecomm-gsm.test    18.00  27.00  50.0%
       test-suite...ks/Prolangs-C/agrep/agrep.test    24.00  35.00  45.8%
       test-suite...TimberWolfMC/timberwolfmc.test    43.00  62.00  44.2%
       test-suite...encode/alacconvert-encode.test    46.00  66.00  43.5%
       test-suite...decode/alacconvert-decode.test    46.00  66.00  43.5%
       test-suite...langs-C/unix-tbl/unix-tbl.test    12.00  17.00  41.7%
       test-suite...peg2/mpeg2dec/mpeg2decode.test    31.00  41.00  32.3%
       test-suite.../CINT2000/254.gap/254.gap.test   117.00 154.00  31.6%
      
      Reviewers: efriedma, davide
      
      Reviewed By: efriedma
      
      Differential Revision: https://reviews.llvm.org/D76611
      6aabb109
    • Djordje Todorovic's avatar
      [docs] Add the release notes about Debug Entry Values · 3a4d9f83
      Djordje Todorovic authored
      Note that x86, arm and aarch64 targets support the Debug Entry Values
      feature by default.
      
      Differential Revision: https://reviews.llvm.org/D77494
      3a4d9f83
    • Serguei Katkov's avatar
      [DAG] Consolidate require spill slot logic in lambda. NFC. · b7e3759e
      Serguei Katkov authored
      Move the logic whether lowering of deopt value requires a spill slot in
      a separate lambda.
      
      Reviewers: reames, dantrushin
      Reviewed By: dantrushin
      Subscribers: hiraditya, llvm-commits
      Differential Revision: https://reviews.llvm.org/D77629
      b7e3759e
    • Peter Smith's avatar
      [ARM] Remove condition that could never be true · 14c1e987
      Peter Smith authored
      From Arm v8 Architecture Reference Manual F5.1.84 LDREXD
      The ldrexd instruction in Arm state has the following conditions:
      
      t = UInt(Rt); t2 = t + 1; n = UInt(Rn);
      if Rt<0> == '1' || t2 == 15 || n == 15 then UNPREDICTABLE;
      
      In when Rt is odd or if Rt is 14 (making t2 15).
      
      In the implementation when the pair is the UNPREDICTABLE R14_R15 we
      would ideally return SOFT_FAIL. We can't because there is no R14_R15
      value for us to return so we fail early returning FAIL.
      
      The early return for registers outside the bounds of the table means
      the check for Rt == 14 (0xE) redundant which causes a static analyzer
      to flag the condition as never being true.
      
      To fix the warning I've removed the check and replaced with a comment
      explaining the difference with the specification.
      
      Fixes pr41660
      
      Differential Revision: https://reviews.llvm.org/D77463
      14c1e987
    • Uday Bondhugula's avatar
      [MLIR] fix/update affine data copy utility for max/min bounds · 70da33bf
      Uday Bondhugula authored
      Fix point-wise copy generation to work with bounds that have max/min.
      Change structure of copy loop nest to use absolute loop indices and
      subtracting base from the indexes of the fast buffers. Update supporting
      utilities: Fix FlatAffineConstraints::getLowerAndUpperBound to look at
      equalities as well and for a missing division. Update unionBoundingBox
      to not discard common constraints (leads to a tighter system). Update
      MemRefRegion::getConstantBoundingSizeAndShape to add memref dimension
      constraints. Run removeTrivialRedundancy at the end of
      MemRefRegion::compute.  Run single iteration loop promotion and
      load/store canonicalization after affine data copy (in its test pass as
      well).
      
      Differential Revision: https://reviews.llvm.org/D77320
      70da33bf
    • Simon Tatham's avatar
      [Support,Windows] Tolerate failure of CryptGenRandom · aab9e9de
      Simon Tatham authored
      Summary:
      In `Unix/Process.inc`, we seed a random number generator from
      `/dev/urandom` if possible, but if not, we're happy to fall back to
      ordinary pseudorandom strategies, like the current time and PID.
      
      The corresponding function on Windows calls `CryptGenRandom`, but it
      //doesn't// have a fallback if that strategy fails. But `CryptGenRandom`
      //can// fail, if a cryptography provider isn't properly initialized, or
      occasionally (by our observation) simply intermittently.
      
      If it's reasonable on Unix to implement traditional pseudorandom-number
      seeding as a fallback, then it's surely reasonable to do the same on
      Windows. So this patch adds a last-ditch use of ordinary rand(), using
      much the same strategy as the Unix fallback code.
      
      Reviewers: hans, sammccall
      
      Reviewed By: hans
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77553
      aab9e9de
    • Pierre-vh's avatar
      Revert "[CodeGen][SelectionDAG] Flip Booleans More Often" · 4fc59a46
      Pierre-vh authored
      This reverts commit 23342bdc.
      4fc59a46
    • Hans Wennborg's avatar
    • Pierre-vh's avatar
      [CodeGen][SelectionDAG] Flip Booleans More Often · 23342bdc
      Pierre-vh authored
      Differential Revision: https://reviews.llvm.org/D77201
      23342bdc
    • Karl-Johan Karlsson's avatar
      Fix unused variable warning in Protocol.cpp, NFCI · 39e9149d
      Karl-Johan Karlsson authored
      Fixed gcc warning:
      clang-tools-extra/clangd/Protocol.cpp:300:16: warning: unused variable 'SemanticHighlighting' [-Wunused-variable]
      39e9149d
    • Awanish Pandey's avatar
      [DWARF5]: Added a left over test case from D73462 · 0d43e168
      Awanish Pandey authored
      Unfortunately this test case never made it to the trunk. This
      was part of https://reviews.llvm.org/D73462 revision.
      0d43e168
    • Sam Clegg's avatar
      [WebAssembly] EmscriptenEHSjLj: Mark more functions as imported · f0bbf3d0
      Sam Clegg authored
      These should have been part of https://reviews.llvm.org/D77192
      
      Differential Revision: https://reviews.llvm.org/D77358
      f0bbf3d0
    • Julian Lettner's avatar
      38edab1c
    • Fred Riss's avatar
      [lldb/test] Fix TestDSYMSourcePathRemapping in the presence of symlnks · 06ea05a3
      Fred Riss authored
      My main work directory is on a separate partition, but I usually access
      it through a symlink in my home directory. When running the tests,
      either Clang or make resolves the symlink, and the real path of the
      test directory ends up in the debug information.
      
      This confuses this test as LLDB is trying to remap the real path, but
      the remapping description uses the path with the symlink in
      it. Calling realpath on the source path when constructing the
      remapping description fixes it.
      06ea05a3
    • Richard Smith's avatar
      Fix template instantiation of a non-dependent call to an inherited · c56975e2
      Richard Smith authored
      constructor with default arguments.
      
      We used to try to rebuild the call as a call to the faked-up inherited
      constructor, which is only a placeholder and lacks (for example) default
      arguments. Instead, build the call by reference to the original
      constructor.
      
      In passing, add a note to say where a call that recursively uses a
      default argument from within itself occurs. This is usually pretty
      obvious, but still at least somewhat useful, and would have saved
      significant debugging time for this particular bug.
      c56975e2
    • Kai Luo's avatar
    • Xiang1 Zhang's avatar
      Enable IBT(Indirect Branch Tracking) in JIT with CET(Control-flow Enforcement Technology) · 01a32f2b
      Xiang1 Zhang authored
      Do not commit the llvm/test/ExecutionEngine/MCJIT/cet-code-model-lager.ll because it will
      cause build bot fail(not suitable for window 32 target).
      
      Summary:
      This patch comes from H.J.'s https://github.com/hjl-tools/llvm-project/commit/2bd54ce7fa9e94fcd1118b948e14d1b6fc54dfd2
      
      **This patch fix the failed llvm unit tests which running on CET machine. **(e.g. ExecutionEngine/MCJIT/MCJITTests)
      
      The reason we enable IBT at "JIT compiled with CET" is mainly that:  the JIT don't know the its caller program is CET enable or not.
      If JIT's caller program is non-CET, it is no problem JIT generate CET code or not.
      But if JIT's caller program is CET enabled,  JIT must generate CET code or it will cause Control protection exceptions.
      
      I have test the patch at llvm-unit-test and llvm-test-suite at CET machine. It passed.
      and H.J. also test it at building and running VNCserver(Virtual Network Console), it works too.
      (if not apply this patch, VNCserver will crash at CET machine.)
      
      Reviewers: hjl.tools, craig.topper, LuoYuanke, annita.zhang, pengfei
      
      Reviewed By: LuoYuanke
      
      Subscribers: tstellar, efriedma, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D76900
      01a32f2b
    • Jun Ma's avatar
      46bff786
    • Eli Friedman's avatar
      [NFC] Modernize misc. uses of Align/MaybeAlign APIs. · 3f13ee8a
      Eli Friedman authored
      Use the current getAlign() APIs where it makes sense, and use Align
      instead of MaybeAlign when we know the value is non-zero.
      3f13ee8a
    • Nico Weber's avatar
      Reland "Make llvm_source_root in llvm-lit relative too." · e613f0ee
      Nico Weber authored
      This reverts commit 3185881d
      and adds a missing "include(AddLLVM)" (similar lines already
      exist elsewhere in compiler-rt).
      e613f0ee
    • Saleem Abdulrasool's avatar
      Target: correct the return value for `GetImageAddrFromToken` · 3775be2d
      Saleem Abdulrasool authored
      We would return `LLDB_INVALID_IMAGE_TOKEN` for the address rather than
      the correct value of `LLDB_IMAGE_ADDRESS`.  This would result in the
      check for the return value to silently pass on x64 as the invalid
      address and invalid token are of different sizes (`size_t` vs
      `uintprr_t`).  This corrects the return value to `LLDB_INVALID_ADDRESS`
      and addresses the rest to reset the mapped address to the invalid value.
      
      This was found by inspection when trying to implement module support for
      Windows.
      3775be2d
    • Adrian Prantl's avatar
      Add missing include · 469580a9
      Adrian Prantl authored
      469580a9
    • Eli Friedman's avatar
      Remove SequentialType from the type heirarchy. · 68b03aee
      Eli Friedman authored
      Now that we have scalable vectors, there's a distinction that isn't
      getting captured in the original SequentialType: some vectors don't have
      a known element count, so counting the number of elements doesn't make
      sense.
      
      In some cases, there's a better way to express the commonality using
      other methods. If we're dealing with GEPs, there's GEP methods; if we're
      dealing with a ConstantDataSequential, we can query its element type
      directly.
      
      In the relatively few remaining cases, I just decided to write out
      the type checks. We're talking about relatively few places, and I think
      the abstraction doesn't really carry its weight. (See thread "[RFC]
      Refactor class hierarchy of VectorType in the IR" on llvmdev.)
      
      Differential Revision: https://reviews.llvm.org/D75661
      68b03aee
    • Richard Smith's avatar
      For PR45333: Move AnalyzeImplicitConversions to using data recursion · 8f2d2a7c
      Richard Smith authored
      instead of recursing on the stack.
      
      This doesn't actually resolve PR45333, because we now hit stack overflow
      somewhere else, but it does get us further. I've not found any way of
      testing this that doesn't still crash elsewhere.
      8f2d2a7c
    • Davide Italiano's avatar
    • Stanislav Mekhanoshin's avatar
      9f09550c
    • Daniel Sanders's avatar
      Add way to omit debug-location from MIR output · f27cea72
      Daniel Sanders authored
      Summary:
      In lieu of a proper pass that strips debug info, add a way
      to omit debug-locations from the MIR output so that
      instructions with MMO's continue to match CHECK's when
      mir-debugify is used
      
      Reviewers: aprantl, bogner, vsk
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77575
      f27cea72
    • Nick Desaulniers's avatar
      [CallSite Removal] a CallBase is never an IndirectCall for isInlineAsm · 41ba8018
      Nick Desaulniers authored
      Summary:
      Thanks to Bill Wendling (void) for the report and steps to reproduce.  It looks
      like this was missed during r350508's cleanup of the CallSite split into
      CallBase, CallInst, and CallBrInst.
      
      This was exposed by running pgo on a callbr, which was creating a ptrtoint to
      the inline asm thinking it was an indirect call. The relevant callchain looks
      like:
      
          IndirectCallPromotionPlugin::run()
          -> PGOIndirectCallVisitor::findIndirectCalls()
            -> PGOIndirectCallVisitor::visitCallBase()
              -> CallBase::isIndirectCall()
      
      Reviewers: void, chandlerc
      
      Reviewed By: void
      
      Subscribers: hiraditya, llvm-commits, craig.topper, srhines
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77600
      41ba8018
    • Jonas Devlieghere's avatar
      [lldb/API] Add missing LLDB_REGISTER_METHOD macros · 29beabbe
      Jonas Devlieghere authored
      Add LLDB_REGISTER_METHOD macros for GetRetriesWithFixIts and
      SetRetriesWithFixIts.
      29beabbe
    • Jacques Pienaar's avatar
      Remove case in rewritergen unmatched opdefgen side · d3a31c4d
      Jacques Pienaar authored
      The rewriter generates a call to build that is not handled by opdef generator
      and so will fail to compile. Also if this is a root node being replaced
      (depth 0) then using the more generic build method in the rewrite suffices.
      d3a31c4d
    • Vedant Kumar's avatar
      [AddressSanitizer] Fix for wrong argument values appearing in backtraces · 5f185a89
      Vedant Kumar authored
      Summary:
      In some cases, ASan may insert instrumentation before function arguments
      have been stored into their allocas. This causes two issues:
      
      1) The argument value must be spilled until it can be stored into the
         reserved alloca, wasting a stack slot.
      
      2) Until the store occurs in a later basic block, the debug location
         will point to the wrong frame offset, and backtraces will show an
         uninitialized value.
      
      The proposed solution is to move instructions which initialize allocas
      for arguments up into the entry block, before the position where ASan
      starts inserting its instrumentation.
      
      For the motivating test case, before the patch we see:
      
      ```
       | 0033: movq %rdi, 0x68(%rbx)  |   | DW_TAG_formal_parameter     |
       | ...                          |   |   DW_AT_name ("a")          |
       | 00d1: movq 0x68(%rbx), %rsi  |   |   DW_AT_location (RBX+0x90) |
       | 00d5: movq %rsi, 0x90(%rbx)  |   |       ^ not correct ...     |
      ```
      
      and after the patch we see:
      
      ```
       | 002f: movq %rdi, 0x70(%rbx)  |   | DW_TAG_formal_parameter     |
       |                              |   |   DW_AT_name ("a")          |
       |                              |   |   DW_AT_location (RBX+0x70) |
      ```
      
      rdar://61122691
      
      Reviewers: aprantl, eugenis
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77182
      5f185a89
    • Nico Weber's avatar
      fix comment typo to cycle bots · 7545be07
      Nico Weber authored
      7545be07
    • Adrian Prantl's avatar
      Remap the target (Xcode) SDK directory to the host SDK directory. · 1e05d7b3
      Adrian Prantl authored
      This is mostly useful for Swift support; it allows LLDB to substitute
      a matching SDK it shipped with instead of the sysroot path that was
      used at compile time.
      
      The goal of this is to make the Xcode SDK something that behaves more
      like the compiler's resource directory, as in that it ships with LLDB
      rather than with the debugged program. This important primarily for
      importing Swift and Clang modules in the expression evaluator, and
      getting at the APINotes from the SDK in Swift.
      
      For a cross-debugging scenario, this means you have to have an SDK for
      your target installed alongside LLDB. In Xcode this will always be the
      case.
      
      rdar://problem/60640017
      
      Differential Revision: https://reviews.llvm.org/D76471
      1e05d7b3
    • Louis Dionne's avatar
      [libc++] 2/N: Enable the new libc++ testing format by default · 276d2b78
      Louis Dionne authored
      Both test formats are equivalent, so this *should* not be a problem.
      We've fixed a couple of failures uncovered by the first time we tried
      making the switch, so this new attempt should go even farther.
      
      If failures are noticed, it should be fine to revert this commit, but
      please give a heads up afterwards so we know to address the issues!
      
      Also note that it is still possible to use the old format by passing
      `--param=use_old_format=True` when running Lit for the time being.
      276d2b78
    • Sid Manning's avatar
      Support bfdname "elf32-hexagon". · 5002863a
      Sid Manning authored
      Add support and update testcases.
      
      Differential Revision: https://reviews.llvm.org/D77579
      5002863a
    • Daniel Sanders's avatar
      Allow MachineFunction to obtain non-const Function (to enable MIR-level debugify) · 35b7b085
      Daniel Sanders authored
      Summary:
      To debugify MIR, we need to be able to create metadata and to do that, we
      need a non-const Module. However, MachineFunction only had a const reference
      to the Function preventing this.
      
      Reviewers: aprantl, bogner
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77439
      35b7b085
    • Louis Dionne's avatar
    • Louis Dionne's avatar
    • Daniel Sanders's avatar
      Add option to limit Debugify to locations (omitting variables) · 15f7bc78
      Daniel Sanders authored
      Summary:
      It can be helpful to test behaviour w.r.t locations without having DEBUG_VALUE
      around. In particular, because DEBUG_VALUE has the potential to change CodeGen
      behaviour (e.g. hasOneUse() vs hasOneNonDbgUse()) while locations generally
      don't.
      
      Reviewers: aprantl, bogner
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77438
      15f7bc78
    • Davide Italiano's avatar