1. Feb 07, 2019
  2. Feb 06, 2019
    • Eric Liu's avatar
      [clangd] Add type boost to fuzzy find in Dex. · d7cb5b8a
      Eric Liu authored
      Summary:
      No noticeable impact on code completions overall except some improvement on
      cross-namespace completion.
      
      Reviewers: sammccall, ilya-biryukov
      
      Reviewed By: sammccall
      
      Subscribers: MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D57815
      
      llvm-svn: 353310
      d7cb5b8a
    • Haojian Wu's avatar
      [clangd] Bump vscode-clangd v0.0.11 · ea27b59a
      Haojian Wu authored
      CHANGELOG:
      - activate the extension on ObjC files.
      
      llvm-svn: 353309
      ea27b59a
    • Tim Northover's avatar
      AArch64: enforce even/odd register pairs for CASP instructions. · 474f5d9b
      Tim Northover authored
      ARMv8.1a CASP instructions need the first of the pair to be an even register
      (otherwise the encoding is unallocated). We enforced this during assembly, but
      not CodeGen before.
      
      llvm-svn: 353308
      474f5d9b
    • Nirav Dave's avatar
      [InlineAsm][X86] Add backend support for X86 flag output parameters. · e5c37958
      Nirav Dave authored
      Allow custom handling of inline assembly output parameters and add X86
      flag parameter support.
      
      llvm-svn: 353307
      e5c37958
    • Haojian Wu's avatar
      [clangd] Format tweak's replacements. · 12e194cb
      Haojian Wu authored
      llvm-svn: 353306
      12e194cb
    • Nirav Dave's avatar
      [SelectionDAGBuilder] Refactor Inline Asm output check. NFCI. · 54511076
      Nirav Dave authored
      llvm-svn: 353305
      54511076
    • Ulrich Weigand's avatar
      [SystemZ] Do not return INT_MIN from strcmp/memcmp · 17a00126
      Ulrich Weigand authored
      The IPM sequence currently generated to compute the strcmp/memcmp
      result will return INT_MIN for the "less than zero" case.  While
      this is in compliance with the standard, strictly speaking, it
      turns out that common applications cannot handle this, e.g. because
      they negate a comparison result in order to implement reverse
      compares.
      
      This patch changes code to use a different sequence that will result
      in -2 for the "less than zero" case (same as GCC).  However, this
      requires that the two source operands of the compare instructions
      are inverted, which breaks the optimization in removeIPMBasedCompare.
      Therefore, I've removed this (and all of optimizeCompareInstr), and
      replaced it with a mostly equivalent optimization in combineCCMask
      at the DAGcombine level.
      
      llvm-svn: 353304
      17a00126
    • Tim Northover's avatar
      AArch64: annotate atomics with dropped acquire semantics when printing. · 71025a2f
      Tim Northover authored
      A quirk of the v8.1a spec is that when the writeback regiser for an atomic
      read-modify-write instruction is wzr/xzr, the instruction no longer enforces
      acquire ordering. However, it's still written with the misleading 'a' mnemonic.
      
      So this adds an annotation when disassembling such instructions, mentioning the
      change.
      
      llvm-svn: 353303
      71025a2f
    • Sanjay Patel's avatar
      [x86] vectorize cast ops in lowering to avoid register file transfers · e84fbb67
      Sanjay Patel authored
      The proposal in D56796 may cross the line because we're trying to avoid vectorization 
      transforms in generic DAG combining. So this is an alternate, later, x86-specific 
      translation of that patch.
      
      There are several potential follow-ups to enhance this:
      1. Allow extraction from non-zero element index.
      2. Peek through extends of smaller width integers.
      3. Support x86-specific conversion opcodes like X86ISD::CVTSI2P
      
      Differential Revision: https://reviews.llvm.org/D56864
      
      llvm-svn: 353302
      e84fbb67
    • Andrea Di Biagio's avatar
      [MCA] Speedup ResourceManager queries. NFCI · 02974728
      Andrea Di Biagio authored
      When a resource unit R is released, the ResourceManager notifies groups that
      contain R. Before this patch, the logic in method ResourceManager::release()
      implemented a potentially slow iterative search of dependent groups on the
      entire set of processor resources.
      This patch replaces that logic with a simpler (and often faster) lookup on array
      `Resource2Groups`.  This patch gives an average speedup of ~3-4% (observed on a
      release build when testing for target btver2).
      No functional change intended.
      
      llvm-svn: 353301
      02974728
    • George Rimar's avatar
      Recommit r353293 "[LLD][ELF] - Set DF_STATIC_TLS flag for i386 target." · ae54e58b
      George Rimar authored
      With the following changes:
      1) Compilation fix:
      std::atomic<bool> HasStaticTlsModel = false; ->
      std::atomic<bool> HasStaticTlsModel{false};
      
      2) Adjusted the comment in code.
      
      Initial commit message:
      
      DF_STATIC_TLS flag indicates that the shared object or executable
      contains code using a static thread-local storage scheme.
      
      Patch checks if IE/LE relocations were used to check if the code uses
      a static model. If so it sets the DF_STATIC_TLS flag.
      
      Differential revision: https://reviews.llvm.org/D57749
      ----
      Modified : /lld/trunk/ELF/Arch/X86.cpp
      Modified : /lld/trunk/ELF/Config.h
      Modified : /lld/trunk/ELF/SyntheticSections.cpp
      Added : /lld/trunk/test/ELF/Inputs/i386-static-tls-model1.s
      Added : /lld/trunk/test/ELF/Inputs/i386-static-tls-model2.s
      Added : /lld/trunk/test/ELF/Inputs/i386-static-tls-model3.s
      Added : /lld/trunk/test/ELF/Inputs/i386-static-tls-model4.s
      Added : /lld/trunk/test/ELF/i386-static-tls-model.s
      Modified : /lld/trunk/test/ELF/i386-tls-ie-shared.s
      Modified : /lld/trunk/test/ELF/tls-dynamic-i686.s
      Modified : /lld/trunk/test/ELF/tls-opt-iele-i686-nopic.s
      
      llvm-svn: 353299
      ae54e58b
    • Nico Weber's avatar
      gn build: Merge r353265, r353237 · da2bb5d5
      Nico Weber authored
      llvm-svn: 353298
      da2bb5d5
    • George Rimar's avatar
      Revert r353293 "[LLD][ELF] - Set DF_STATIC_TLS flag for i386 target." · 52fafcb9
      George Rimar authored
      It broke BB:
      http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-ubuntu-fast/builds/43450
      http://lab.llvm.org:8011/builders/lld-x86_64-freebsd/builds/27891
      
      Error is:
      tools/lld/ELF/Config.h:84:41: error: copying member subobject of type
      'std::atomic<bool>' invokes deleted constructor std::atomic<bool> HasStaticTlsModel = false;
      
      llvm-svn: 353297
      52fafcb9
    • Ilya Biryukov's avatar
      [clangd] Update dev dependencies of clangd-vscode · 8e42c622
      Ilya Biryukov authored
      Summary:
      The version bumps are a result of running `npm audit`, which found
      3 security issues in previous versions of our dependencies.
      
      Also add 'package-lock.json' to the repo, it's a common practice to
      check in those files into the repository to get consistent versions of
      dependencies when running on different machines.
      
      Reviewers: hokein
      
      Reviewed By: hokein
      
      Subscribers: dschuff, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D57814
      
      llvm-svn: 353296
      8e42c622
    • Ilya Biryukov's avatar
      [clangd] Enable clangd on Objective-C in VSCode · 7a621551
      Ilya Biryukov authored
      Summary: Thanks to Andreas Ostermeyer for raising this on the mailing list.
      
      Reviewers: hokein
      
      Reviewed By: hokein
      
      Subscribers: ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D57813
      
      llvm-svn: 353295
      7a621551
    • Eugene Leviant's avatar
      Attempt to fix buildbot after r353289 · ef6eba24
      Eugene Leviant authored
      llvm-svn: 353294
      ef6eba24
    • George Rimar's avatar
      [LLD][ELF] - Set DF_STATIC_TLS flag for i386 target. · da60ad22
      George Rimar authored
      DF_STATIC_TLS flag indicates that the shared object or executable
      contains code using a static thread-local storage scheme.
      
      Patch checks if IE/LE relocations were used to check if the code uses
      a static model. If so it sets the DF_STATIC_TLS flag.
      
      Differential revision: https://reviews.llvm.org/D57749
      
      llvm-svn: 353293
      da60ad22
    • Clement Courbet's avatar
      [DAGCombine][NFC] GatherAllAliases should take a LSBaseSDNode. · 5a6712b6
      Clement Courbet authored
      GatherAllAliases only makes sense for LSBaseSDNode. Enforce it with
      static typing instead of runtime cast.
      
      llvm-svn: 353291
      5a6712b6
    • Max Kazantsev's avatar
      [NFC] Simplify check in guard widening · cd48ac36
      Max Kazantsev authored
      llvm-svn: 353290
      cd48ac36
    • Eugene Leviant's avatar
      [llvm-objcopy] Allow regular expressions in name comparison · f324f6dc
      Eugene Leviant authored
      Differential revision: https://reviews.llvm.org/D57517
      
      llvm-svn: 353289
      f324f6dc
    • James Henderson's avatar
      [DebugInfo]Print correct value for special opcode address increment · b6b5b1a5
      James Henderson authored
      The wrong variable was being used when printing the address increment in
      verbose output of .debug_line. This patch fixes this.
      
      Reviewed by: JDevlieghere
      
      Differential Revision: https://reviews.llvm.org/D57693
      
      llvm-svn: 353288
      b6b5b1a5
    • James Henderson's avatar
      [DebugInfo][llvm-symbolizer]Add some tests for edge cases when symbolizing · cd1424ae
      James Henderson authored
      This patch adds half a dozen new tests that test various edge cases in
      the behaviour of the symbolizer and DWARF data parsing. All of them test
      the current behaviour.
      
      Reviewed by: JDevlieghere, aprantl
      
      Differential Revision: https://reviews.llvm.org/D57741
      
      llvm-svn: 353286
      cd1424ae
    • Peter Smith's avatar
      [ELF][ARM] Add test case that will fail if toPlt() is removed [NFC] · aa192bb7
      Peter Smith authored
      When a thunk is created to a PLT entry, the call to the thunk is converted
      to a non-plt expression with fromPlt(). If the thunk becomes unusable we
      retarget the relocation back to its original target and try again. When we
      do this we need to make sure that we restore the PLT form of the expression
      with toPlt().
      
      This change adds a test case that will fail if toPlt() is removed. We need
      to have a call to a preemptible symbol defined within the link unit. If
      toPlt() is removed then the relocation to the thunk to the PLT entry for the
      preemptible symbol will be retargeted to the preemptible symbol itself
      instead of its PLT entry.
      
      Differential Revision: https://reviews.llvm.org/D57743
      
      llvm-svn: 353285
      aa192bb7
    • Haojian Wu's avatar
      [clangd] Add CLI flag "-clang-tidy" to enable/disable running clang-tidy checks. · ac6d2e1b
      Haojian Wu authored
      Reviewers: sammccall
      
      Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D57746
      
      llvm-svn: 353284
      ac6d2e1b
    • Haojian Wu's avatar
      [clangd] Some minor fixes. · 5dcc66d0
      Haojian Wu authored
      Reviewers: ilya-biryukov
      
      Subscribers: ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D57755
      
      llvm-svn: 353283
      5dcc66d0
    • Roman Lebedev's avatar
      [yaml::BinaryRef] Slight perf tuning (for llvm-exegesis analysis mode) · 41828010
      Roman Lebedev authored
      Summary:
      llvm-exegesis uses this functionality to read it's benchmark dumps.
      This reading of `.yaml`s takes ~60% of runtime for 14656 benchmark points (i.e. one sweep over all x86 instructions),
      but only 30% of time for 3x as much benchmark points.
      
      In particular, this `BinaryRef` appears to be an obvious pain point.
      Without patch:
      ```
      $ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=1.0 -benchmarks-file=/tmp/benchmarks-inverse_throughput-onefull.yaml -analysis-clusters-output-file="" -analysis-inconsistencies-output-file=/tmp/clusters-orig.html
      no exegesis target for x86_64-unknown-linux-gnu, using default
      Parsed 14656 benchmark points
      Printing sched class consistency analysis results to file '/tmp/clusters-orig.html'
      ...
      no exegesis target for x86_64-unknown-linux-gnu, using default
      Parsed 14656 benchmark points
      Printing sched class consistency analysis results to file '/tmp/clusters-orig.html'
      
       Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=1.0 -benchmarks-file=/tmp/benchmarks-inverse_throughput-onefull.yaml -analysis-clusters-output-file= -analysis-inconsistencies-output-file=/tmp/clusters-orig.html' (25 runs):
      
                  972.86 msec task-clock                #    0.994 CPUs utilized            ( +-  0.25% )
                      30      context-switches          #   30.774 M/sec                    ( +- 21.74% )
                       0      cpu-migrations            #    0.370 M/sec                    ( +- 67.81% )
                   11873      page-faults               # 12211.512 M/sec                   ( +-  0.00% )
              3898373408      cycles                    # 4009682.186 GHz                   ( +-  0.25% )  (83.12%)
               360399748      stalled-cycles-frontend   #    9.24% frontend cycles idle     ( +-  0.54% )  (83.24%)
              1099450483      stalled-cycles-backend    #   28.20% backend cycles idle      ( +-  0.59% )  (33.63%)
              4910528820      instructions              #    1.26  insn per cycle
                                                        #    0.22  stalled cycles per insn  ( +-  0.13% )  (50.21%)
              1111976775      branches                  # 1143726625.854 M/sec              ( +-  0.10% )  (66.77%)
                23248474      branch-misses             #    2.09% of all branches          ( +-  0.19% )  (83.29%)
      
                 0.97850 +- 0.00647 seconds time elapsed  ( +-  0.66% )
      ```
      With the patch:
      ```
      $ perf stat -r 25 ./bin/llvm-exegesis -mode=analysis -analysis-epsilon=1.0 -benchmarks-file=/tmp/benchmarks-inverse_throughput-onefull.yaml -analysis-clusters-output-file="" -analysis-inconsistencies-output-file=/tmp/clusters-new.html
      no exegesis target for x86_64-unknown-linux-gnu, using default
      Parsed 14656 benchmark points
      Printing sched class consistency analysis results to file '/tmp/clusters-new.html'
      ...
      no exegesis target for x86_64-unknown-linux-gnu, using default
      Parsed 14656 benchmark points
      Printing sched class consistency analysis results to file '/tmp/clusters-new.html'
      
       Performance counter stats for './bin/llvm-exegesis -mode=analysis -analysis-epsilon=1.0 -benchmarks-file=/tmp/benchmarks-inverse_throughput-onefull.yaml -analysis-clusters-output-file= -analysis-inconsistencies-output-file=/tmp/clusters-new.html' (25 runs):
      
                  905.29 msec task-clock                #    0.999 CPUs utilized            ( +-  0.11% )
                      15      context-switches          #   16.533 M/sec                    ( +- 32.27% )
                       0      cpu-migrations            #    0.000 K/sec
                   11873      page-faults               # 13121.789 M/sec                   ( +-  0.00% )
              3627759720      cycles                    # 4009283.100 GHz                   ( +-  0.11% )  (83.19%)
               370401480      stalled-cycles-frontend   #   10.21% frontend cycles idle     ( +-  0.22% )  (83.19%)
              1007114438      stalled-cycles-backend    #   27.76% backend cycles idle      ( +-  0.34% )  (33.62%)
              4414014304      instructions              #    1.22  insn per cycle
                                                        #    0.23  stalled cycles per insn  ( +-  0.08% )  (50.36%)
              1003751700      branches                  # 1109314021.971 M/sec              ( +-  0.07% )  (66.97%)
                24611010      branch-misses             #    2.45% of all branches          ( +-  0.10% )  (83.41%)
      
                 0.90593 +- 0.00105 seconds time elapsed  ( +-  0.12% )
      ```
      So this decreases the overall run time of llvm-exegesis analysis mode (on one sweep) by roughly -7%.
      
      To be noted, `BinaryRef::writeAsBinary()` change is the reason for the perf changes,
      usage of `llvm::isHexDigit()` instead of `isxdigit()` does not appear to have any perf impact,
      i have only changed it "for symmetry".
      
      `writeAsBinary()` change is correct, it produces identical de-hex-ified buffer, and the final output is thus identical:
      ```
      $ sha512sum /tmp/clusters-*
      db4bbd904fe8840853b589b032c5041bc060b91bcd9c27b914b56581fbc473550eea74b852238c79963b5adf2419f379e9f5db76784048b48e3937f9f3e732bf  /tmp/clusters-new.html
      db4bbd904fe8840853b589b032c5041bc060b91bcd9c27b914b56581fbc473550eea74b852238c79963b5adf2419f379e9f5db76784048b48e3937f9f3e732bf  /tmp/clusters-orig.html
      ```
      
      Reviewers: silvas, espindola, sbc100, zturner, courbet, gchatelet
      
      Reviewed By: gchatelet
      
      Subscribers: tschuett, RKSimon, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D57699
      
      llvm-svn: 353282
      41828010
    • Aleksandr Urakov's avatar
      [x64] Process the B field of the REX prefix correctly for the PUSH and POP · 823c66b6
      Aleksandr Urakov authored
      instructions
      
      Summary: This patch makes `x86AssemblyInspectionEngine` to process zero value of
      the `B` field of the `REX` prefix in a correct way for `PUSH` and `POP`
      instructions. MSVC sometimes emits `pushq %rbp` instruction as `0x40 0x55`, and
      it was not parsed correctly before.
      
      Reviewers: jasonmolenda, labath
      
      Reviewed By: jasonmolenda, labath
      
      Subscribers: abidh, lldb-commits
      
      Tags: #lldb
      
      Differential Revision: https://reviews.llvm.org/D57745
      
      llvm-svn: 353281
      823c66b6
    • Jan Kratochvil's avatar
      Fix strlen() of unbound array undefined behavior · bb3609e4
      Jan Kratochvil authored
      LLDB testsuite fails when built by GCC8 on:
        LLDB :: SymbolFile/DWARF/find-basic-namespace.cpp
      
      This is because this code in LLDB codebase has undefined behavior:
      
        #include <algorithm>
        #include <string.h>
        // lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp:1731
        static struct section_64 {
          char sectname[16];
          char segname[16];
        } sect64 = { {'_','_','a','p','p','l','e','_','n','a','m','e','s','p','a','c'}, "__DWARF" };
        int main() {
          return std::min<size_t>(strlen(sect64.sectname), sizeof(sect64.sectname));
        }
      
      It has been discussed as a (false) bugreport to GCC:
        wrong-code: LLDB testcase fails: SymbolFile/DWARF/find-basic-namespace.cpp
        https://bugzilla.redhat.com/show_bug.cgi?id=1672436
      
      Differential Revision: https://reviews.llvm.org/D57781
      
      llvm-svn: 353280
      bb3609e4
    • Fangrui Song's avatar
      b8ee8c85
    • Max Kazantsev's avatar
      [NFC] Factor out detatchment of dead blocks from their erasing · 36b392cb
      Max Kazantsev authored
      llvm-svn: 353277
      36b392cb
    • Max Kazantsev's avatar
      a4ccfc18
    • Max Kazantsev's avatar
      [NFC] Revert rL353274 · 0d7ad3c9
      Max Kazantsev authored
      llvm-svn: 353275
      0d7ad3c9
    • Max Kazantsev's avatar
      61e6ffc3
    • Max Kazantsev's avatar
      [NFC] Replace readonly SmallVectorImpl with ArrayRef · bad4db8b
      Max Kazantsev authored
      llvm-svn: 353273
      bad4db8b
    • David L. Jones's avatar
      [wasm-ld] Fix wasm trace test to use %t for temporary files. · 4c3ba384
      David L. Jones authored
      llvm-svn: 353272
      4c3ba384