1. Apr 17, 2020
    • Tyker's avatar
      [NFC] Remove waymarking because it improves performances · ff9379f4
      Tyker authored
      Summary:
      This patch remove waymarking and replaces it with storing a pointer to the User in the Use.
      here are the results on the measurements for the CTMark tests of the test suite.
      ```
      Metric: instructions_count
      
      Program                                                      baseline      patched       diff
       test-suite :: CTMark/ClamAV/clamscan.test                    72557942065   71733653521  -1.1%
       test-suite :: CTMark/sqlite3/sqlite3.test                    76281422939   75484840636  -1.0%
       test-suite :: CTMark/consumer-typeset/consumer-typeset.test  51364676366   50862185614  -1.0%
       test-suite :: CTMark/SPASS/SPASS.test                        60476106505   59908437767  -0.9%
       test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test              112578442329  111725050856 -0.8%
       test-suite :: CTMark/mafft/pairlocalalign.test               50846133013   50473644539  -0.7%
       test-suite :: CTMark/kimwitu++/kc.test                       54692641250   54349070299  -0.6%
       test-suite :: CTMark/7zip/7zip-benchmark.test                182216614747  181216091230 -0.5%
       test-suite :: CTMark/Bullet/bullet.test                      123459210616  122905866767 -0.4%
       Geomean difference                                                                      -0.8%
      
      Metric: peak_memory_use
      
      Program                                                      baseline  patched   diff
       test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test              326864    338524    3.6%
       test-suite :: CTMark/sqlite3/sqlite3.test                    216412    221240    2.2%
       test-suite :: CTMark/7zip/7zip-benchmark.test                11808284  12022604  1.8%
       test-suite :: CTMark/Bullet/bullet.test                      6831752   6945988   1.7%
       test-suite :: CTMark/SPASS/SPASS.test                        2682552   2721820   1.5%
       test-suite :: CTMark/ClamAV/clamscan.test                    5037256   5107936   1.4%
       test-suite :: CTMark/consumer-typeset/consumer-typeset.test  2752728   2790768   1.4%
       test-suite :: CTMark/mafft/pairlocalalign.test               1517676   1537244   1.3%
       test-suite :: CTMark/kimwitu++/kc.test                       1090748   1103448   1.2%
       Geomean difference                                                               1.8%
      
      Metric: compile_time
      
      Program                                                      baseline patched diff
       test-suite :: CTMark/consumer-typeset/consumer-typeset.test  14.71    14.38  -2.2%
       test-suite :: CTMark/sqlite3/sqlite3.test                    23.18    22.73  -2.0%
       test-suite :: CTMark/7zip/7zip-benchmark.test                57.96    56.99  -1.7%
       test-suite :: CTMark/ClamAV/clamscan.test                    20.75    20.49  -1.2%
       test-suite :: CTMark/kimwitu++/kc.test                       18.35    18.15  -1.1%
       test-suite :: CTMark/SPASS/SPASS.test                        18.72    18.57  -0.8%
       test-suite :: CTMark/mafft/pairlocalalign.test               14.09    14.00  -0.6%
       test-suite :: CTMark/Bullet/bullet.test                      37.38    37.19  -0.5%
       test-suite :: CTMark/tramp3d-v4/tramp3d-v4.test              33.81    33.76  -0.2%
       Geomean difference                                                           -1.1%
      ```
      
      i believe that it is worth trading +1.8% peak memory use for -1.1% compile time.
      also this patch removes waymarking which simplifies the Use and User classes.
      
      Reviewers: nikic, lattner
      
      Reviewed By: lattner
      
      Subscribers: russell.gallop, foad, ggreif, rriddle, ekatz, fhahn, lebedev.ri, mgorny, hiraditya, george.burgess.iv, asbirlea, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77144
      ff9379f4
    • Yi-Hong Lyu's avatar
      [CommandLine] Fix cl::ConsumeAfter support with more than one positional argument · 54cfc694
      Yi-Hong Lyu authored
      Summary:
      Currently, cl::ConsumeAfter only works for the case that has exactly one
      positional argument. Without the fix, it skip fulfilling first positional
      argument and put that additional positional argument in interpreter arguments.
      
      Reviewers: bkramer, Mordante, rnk, lattner, beanz, craig.topper
      
      Reviewed By: rnk
      
      Subscribers: JosephTremoulet, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D77242
      54cfc694
    • Alex Brachet's avatar
      91c10f50
    • Simon Pilgrim's avatar
    • Simon Pilgrim's avatar
    • Simon Pilgrim's avatar
      ScheduleDFS.h - Replace ArrayRef.h include with forward declaration. NFC. · 7fba79be
      Simon Pilgrim authored
      We have no need to include the entire header.
      7fba79be
    • Simon Pilgrim's avatar
      ScoreboardHazardRecognizer.h - remove unnecessary llvm::InstrItineraryData... · 0ca77adf
      Simon Pilgrim authored
      ScoreboardHazardRecognizer.h - remove unnecessary llvm::InstrItineraryData forward declaration. NFC.
      
      We have to include MCInstrItineraries.h where its defined.
      0ca77adf
    • Matthias Gehre's avatar
      [clang-tidy] modernize-use-using: Fix broken fixit with 'template' keyword · 0642e5e7
      Matthias Gehre authored
      Summary:
      Before this PR, `modernize-use-using` would transform the typedef in
      ```
      
      template <typename a> class TemplateKeyword {
        typedef typename a::template f<> e;
        typedef typename a::template f<>::d e2;
      };
      ```
      into
      ```
      template <typename a> class TemplateKeyword {
        using d = typename a::b<>;
        using d2 = typename a::template a::b<>::c;
      };
      ```
      The first one is missing the `template` keyword,
      the second one has an extra `a::` scope. Both result
      in compilation errors.
      
      Reviewers: aaron.ballman, alexfh, hokein, njames93
      
      Subscribers: xazax.hun, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D78139
      0642e5e7
    • Bevin Hansson's avatar
      [Fixed Point] Move the compassign LHS type correction a bit further down. NFCI. · fd7a3418
      Bevin Hansson authored
      Summary:
      We can simplify the LHSTy correction for
      fixed-point compassign by moving it below
      the point where we know we have a compound
      assignment.
      
      Also, we shouldn't look at the LHS and RHS
      separately; look at the computation result
      type instead.
      
      Looking at the LHS and RHS is also wrong
      for compassigns with fixed and floating
      point (though this does not work upstream
      yet).
      
      Reviewers: leonardchan
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D78294
      fd7a3418
    • Petr Hosek's avatar
      [profile] Avoid duplicating or leaking VMO · 485862ec
      Petr Hosek authored
      Now that write data continously into the memory mapping, we don't need
      to keep the VMO handle around after it has been mapped. This change also
      ensures that the VMO is always closed on error.
      
      Differential Revision: https://reviews.llvm.org/D76963
      485862ec
    • Sam Parker's avatar
      [ARM][MVE] Add VHADD and VHSUB patterns · f88000a4
      Sam Parker authored
      Add patterns that use a normal, non-wrapping, add and sub nodes along
      with an arm vshr imm node.
      
      Differential Revision: https://reviews.llvm.org/D77065
      f88000a4
    • James Nagurne's avatar
      Fix opt-viewer tests failing after move from cgi.escape to html.escape · e1444744
      James Nagurne authored
      These two tests utilize pre-generated opt-viewer output to diff against
      a run of opt-viewer over a known yaml file.
      
      In commit 4b428e8f (D76126), the escape function used for rendering was changed
      from cgi.escape to html.escape. This modification causes a behavioral
      difference with regards to quote characters.
      
      cgi will not escape quotes by default, but html will.
      
      Therefore, these tests were failing because they expected the old behavior
      of "string", but was instead seeing &quot;string&quot.
      
      This solution modifies the known test outputs to use the escaped quotes
      rather than not escaping quotes during rendering for no particular reason.
      
      It is notable that when testing the optimization records generated by
      LLVM, there was never quotes in the remarks I could find, specifically in
      the Callee field where they exist in the pre-generated yaml for testing.
      
      Differential Revision: https://reviews.llvm.org/D78241
      e1444744
    • Shengchen Kan's avatar
      Temporaily revert [X86][MC][NFC] Reduce the parameters of functions in X86MCCodeEmitter(Part II) · c5fa0a4d
      Shengchen Kan authored
      It causes some encoding fails. Plan to recommit it after fixing that.
      
      This reverts commit 3017580c.
      c5fa0a4d
    • Shengchen Kan's avatar
      [X86][MC][NFC] Reduce the parameters of functions in X86MCCodeEmitter(Part II) · 3017580c
      Shengchen Kan authored
      Summary:
      We determine the REX prefix used by instruction in `determineREXPrefix`,
      and this value is used in `emitMemModRMByte' and used as the return
      value of `emitOpcodePrefix`.
      
      Before this patch, REX was passed as reference to `emitPrefixImpl`, it
      is strange and not necessary, e.g, we have to write
      ```
      bool Rex = false;
      emitPrefixImpl(CurOp, CurByte, Rex, MI, STI, OS);
      ```
      in `emitPrefix` even if `Rex` will not be used.
      
      So we let HasREX be the return value of `emitPrefixImpl`. The HasREX is passed
      from `emitREXPrefix` to  `emitOpcodePrefix` and then to
      `emitPrefixImpl`. This makes sense since REX is a kind of opcode prefix
      and of course is a prefix.
      
      Reviewers: craig.topper, pengfei
      
      Reviewed By: craig.topper
      
      Subscribers: annita.zhang, craig.topper, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D78276
      3017580c
    • QingShan Zhang's avatar
      [PowerPC] Exploit the rldicl + rldicl when and with mask · 4bd186c0
      QingShan Zhang authored
      If we are and the constant like 0xFFFFFFC00000, for now, we are using several
      instructions to generate this 48bit constant and final an "and". However, we
      could exploit it with two rotate instructions.
      
             MB          ME               MB+63-ME
      +----------------------+     +----------------------+
      |0000001111111111111000| ->  |0000000001111111111111|
      +----------------------+     +----------------------+
       0                    63      0                    63
      Rotate left ME + 1 bit first, and then, mask it with (MB + 63 - ME, 63),
      finally, rotate back. Notice that, we need to round it with 64 bit for the
      wrapping case.
      
      Reviewed by: ChenZheng, Nemanjai
      
      Differential Revision: https://reviews.llvm.org/D71831
      4bd186c0
    • Craig Topper's avatar
      [SampleProfile] Use CallBase in function arguments and data structures to... · 5034df86
      Craig Topper authored
      [SampleProfile] Use CallBase in function arguments and data structures to reduce the number of explicit casts. NFCI
      
      Removing CallSite left us with a bunch of explicit casts from
      Instruction to CallBase. This moves the casts earlier so that
      function arguments and data structure types are CallBase so
      we don't have to cast when we use them.
      
      Differential Revision: https://reviews.llvm.org/D78246
      5034df86
    • Lang Hames's avatar
      [llvm-objcopy][MachO] Correctly identify object file endianness. · a6f19762
      Lang Hames authored
      The header magic value is held in the native endianness, so the method used in
      cc0ec3fd. Use MachOReader / MachOWriter's existing endianness tests instead.
      a6f19762
    • aartbik's avatar
      [mlir] [VectorOps] Progressive lowering of vector.broadcast · 186709c6
      aartbik authored
      Summary:
      Rather than having a full, recursive, lowering of vector.broadcast
      to LLVM IR, it is much more elegant to have a progressive lowering
      of each vector.broadcast into a lower dimensional vector.broadcast,
      until only elementary vector operations remain. This results
      in more elegant, step-wise code, that is easier to understand.
      Also makes some optimizations in the generated code.
      
      Reviewers: nicolasvasilache, mehdi_amini, andydavis1, grosul1
      
      Reviewed By: nicolasvasilache
      
      Subscribers: mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, grosul1, frgossen, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D78071
      186709c6
    • Lang Hames's avatar
      [llvm-objcopy][MachO] Fix MachO::relocation_info use after 386f1c11. · cc0ec3fd
      Lang Hames authored
      Use shift/mask operations to access r_symbolnum rather than relying on
      MachO::relocation_info. This should fix the big-endian bot failures that were
      caused by 386f1c11.
      cc0ec3fd
    • Wouter van Oortmerssen's avatar
    • LLVM GN Syncbot's avatar
      [gn build] Port 953a814a · 634f1738
      LLVM GN Syncbot authored
      634f1738
    • Chris Lattner's avatar
      Remove the llvm/Support/StringPool.h file and related support now that it has... · 953a814a
      Chris Lattner authored
      Remove the llvm/Support/StringPool.h file and related support now that it has no clients.  A plain old StringSet<> is a better replacement.
      
      Subscribers: mgorny, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D78336
      953a814a
    • Jonas Devlieghere's avatar
      Revert "[lldb/Utility] Provide a stringify_append overload for function pointers." · 9eaf0abe
      Jonas Devlieghere authored
      Temporarily reverts commit d10386e1
      because it breaks the Windows build. MSVC complains about an ambiguous
      call to an overloaded function.
      9eaf0abe
    • Craig Topper's avatar
      [SelectionDAGBuilder][CGP][X86] Move some of SDB's gather/scatter uniform base handling to CGP. · 944cc5e0
      Craig Topper authored
      I've always found the "findValue" a little odd and
      inconsistent with other things in SDB.
      
      This simplfifies the code in SDB to just handle a splat constant
      address or a 2 operand GEP in the same BB. This removes the
      need for "findValue" since the operands to the GEP are
      guaranteed to be available. The splat constant handling is
      new, but was needed to avoid regressions due to constant
      folding combining GEPs created in CGP.
      
      CGP is now responsible for canonicalizing gather/scatters into
      this form. The pattern I'm using for scalarizing, a scalar GEP
      followed by a GEP with an all zeroes index, seems to be subject
      to constant folding that the insertelement+shufflevector was not.
      
      Differential Revision: https://reviews.llvm.org/D76947
      944cc5e0
    • Paula Toth's avatar
      [libc] Add cmake target for linting libc. · 741d3c20
      Paula Toth authored
      Summary:
      This patch implements running linting on llvm-libc using build rule targets.
      
      1) adds a new target per entrypoint for linting with the naming convention `<qualified_target_name>.__lint__` e.g `libc.src.string.strlen.__lint__`.
      2) makes the build target for each entrypoint depend on the linting targets so that they run along with compilation of each entrypoint.
      3) adds a lint all target named `lint-libc`.  `check-libc` now depends on this new target.
      4) linting creates a lot of additional targets from clang and clang-tidy that need to be built so an opt out flag can be passed to cmake: `LLVM_LIBC_ENABLE_LINTING`.
      
      Reviewers: sivachandra, abrachet
      
      Reviewed By: sivachandra
      
      Subscribers: abrachet, mgorny, tschuett, libc-commits
      
      Tags: #libc-project
      
      Differential Revision: https://reviews.llvm.org/D77861
      741d3c20
    • Evgenii Stepanov's avatar
      [ubsan] Link shared runtime library with a version script. · 77e3a2e0
      Evgenii Stepanov authored
      Summary:
      Do not reexport libgcc.a symbols and random sanitizer internal symbols
      by applying a version script to the shared library build.
      
      This fixes unwinder conflicts on Android that are created by reexporting
      the unwinder interface from libgcc_real.a. The same is already done in
      asan and hwasan.
      
      Reviewers: vitalybuka, srhines
      
      Subscribers: mgorny, #sanitizers, llvm-commits
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D78325
      77e3a2e0
    • Dan Liew's avatar
      [NFC] Introduce a `LateInitialize()` method to `SymbolizerTool` that is called... · fccea7f3
      Dan Liew authored
      [NFC] Introduce a `LateInitialize()` method to `SymbolizerTool` that is called during the LateInitialize stage of the sanitizer runtimes.
      
      Summary:
      This is implemented by adding a `Symbolizer::LateInitializeTools()`
      method that iterates over the registered tools and calls the
      `LateInitialize()` method on them.
      
      `Symbolizer::LateInitializeTools()` is now called from the various
      `Symbolizer::LateInitialize()` implementations.
      
      The default implementation of `SymbolizerTool::LateInitialize()`
      does nothing so this change should be NFC.
      
      This change allows `SymbolizerTool` implementations to perform
      any initialization that they need to perform at the
      LateInitialize stage of a sanitizer runtime init.
      
      rdar://problem/58789439
      
      Reviewers: kubamracek, yln, vitalybuka, cryptoad, phosek, rnk
      
      Subscribers: #sanitizers, llvm-commits
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D78178
      fccea7f3
    • Wouter van Oortmerssen's avatar
      3eaeebec
    • Pratyai Mazumder's avatar
      [NFC, tsan] Update tsan tests expectation · a1526cd6
      Pratyai Mazumder authored
      Summary:
      These tests pass with clang, but fail if gcc was used.
      gcc build creates similar but not the same stacks.
      
      Reviewers: vitalybuka
      
      Reviewed By: vitalybuka
      
      Subscribers: dvyukov, llvm-commits, #sanitizers
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D78114
      a1526cd6
    • Wouter van Oortmerssen's avatar
    • Wouter van Oortmerssen's avatar
      [WebAssembly] Add int32 DW_OP_WASM_location variant · 48139ebc
      Wouter van Oortmerssen authored
      This to allow us to add reloctable global indices as a symbol.
      Also adds R_WASM_GLOBAL_INDEX_I32 relocation type to support it.
      
      See discussion in https://github.com/WebAssembly/debugging/issues/12
      48139ebc
    • Craig Topper's avatar
      [CallSite removal][IPO] Change implementation of AbstractCallSite to store a... · 798b262c
      Craig Topper authored
      [CallSite removal][IPO] Change implementation of AbstractCallSite to store a CallBase* instead of CallSite. NFCI.
      
      CallSite will likely be removed soon, but AbstractCallSite serves a different purpose and won't be going away.
      
      This patch switches it to internally store a CallBase* instead of a
      CallSite. The only interface changes are the removal of the getCallSite
      method and getCallBackUses now takes a CallBase&. These methods had only
      a few callers that were easy enough to update without needing a
      compatibility shim.
      
      In the future once the other CallSites are gone, the CallSite.h
      header should be renamed to AbstractCallSite.h
      
      Differential Revision: https://reviews.llvm.org/D78322
      798b262c
    • Lang Hames's avatar
      [Object] Remove conditional layout of bitfields in MachO::relocation_info. · 386f1c11
      Lang Hames authored
      This removes the conditional layout of relocation_info bitfields that was
      introduced in 3ccd677b (svn r358839). The platform relocation_info
      struct (defined in usr/include/mach-o/reloc.h) does not define the layout of
      this struct differently on big-endian platforms and we want to keep the LLVM
      and platform definitions in sync.
      
      To fix the bug that 3ccd677b addressed this patch modifies JITLink to construct
      its relocation_info structs from the raw relocation words using shift and mask
      operations.
      386f1c11
    • Richard Smith's avatar
      llvm-addr2line: assume addresses on the command line are hexadecimal rather... · 9a709dd2
      Richard Smith authored
      llvm-addr2line: assume addresses on the command line are hexadecimal rather than attempting to guess the base based on the form of the number.
      
      Summary:
      This matches the behavior of GNU addr2line. We previously treated
      hexadecimal addresses as binary if they started with 0b, otherwise as
      octal if they started with 0, otherwise as decimal.
      
      This only affects llvm-addr2line; the behavior of llvm-symbolize is
      unaffected.
      
      Reviewers: ikudrin, rupprecht, jhenderson
      
      Subscribers: llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D73306
      9a709dd2
    • Julian Lettner's avatar
      [UBSan] Fix vptr checks on arm64e · 80022ae2
      Julian Lettner authored
      Fix UBSan's vptr checks in the presence of arm64e pointer signing.
      
      Radar-Id: rdar://61786404
      
      Reviewed By: vsk
      
      Differential Revision: https://reviews.llvm.org/D78230
      80022ae2
    • Sam McCall's avatar
      63725df1
    • Sam McCall's avatar
      [clangd] Print PID on windows too · b0c4dfb3
      Sam McCall authored
      b0c4dfb3
    • Stephen Neuendorffer's avatar
      [MLIR][cmake] Use DEPENDS instead of add_dependencies() · 26805f0b
      Stephen Neuendorffer authored
      add_llvm_library() sometimes needs access to the dependencies in order to
      generate new targets.  Using DEPENDS allows this.
      
      Differential Revision: https://reviews.llvm.org/D78321
      26805f0b
    • Eric Fiselier's avatar
      [clang] Fix invalid comparator in tablegen · af2968e3
      Eric Fiselier authored
      Summary: The current version of the comparator does not introduce a strict weak ordering.
      
      Reviewers: fowles, bkramer, sdesmalen
      
      Reviewed By: sdesmalen
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D78323
      af2968e3
    • Davide Italiano's avatar
      [DWARF] Rename a function and comment it for clarity. · ce779004
      Davide Italiano authored
      Pointed out by Adrian.
      ce779004