1. Sep 09, 2019
  2. Sep 08, 2019
    • Kamil Rytarowski's avatar
      Enable leak-detection for NetBSD/amd64 in test/asan · 14f19909
      Kamil Rytarowski authored
      llvm-svn: 371335
      14f19909
    • Kamil Rytarowski's avatar
      Do not intercept malloc_usable_size on NetBSD · c8afbf3d
      Kamil Rytarowski authored
      llvm-svn: 371334
      c8afbf3d
    • David Stenberg's avatar
      [DebugInfo][X86] Describe call site values for zero-valued imms · 5a583665
      David Stenberg authored
      Summary:
      Add zero-materializing XORs to X86's describeLoadedValue() hook in order
      to produce call site values.
      
      I have had to change the defs logic in collectCallSiteParameters() a bit
      to be able to describe the XORs. The XORs implicitly define $eflags,
      which would cause them to never be considered, due to a guard condition
      that I->getNumDefs() is one. I have changed that condition so that we
      now only consider instructions where a forwarded register overlaps with
      the instruction's single explicit define. We still need to collect the implicit
      defines of other forwarded registers to remove them from the work list.
      I'm not sure how to move towards supporting instructions with multiple
      explicit defines, cases where forwarded register are implicitly defined,
      and/or cases where an instruction produces values for multiple forwarded
      registers. Perhaps the describeLoadedValue() hook should take a register
      argument, and we then leave it up to the hook to describe the loaded
      value in that register? I have not yet encountered a situation where
      that would be necessary though.
      
      Reviewers: aprantl, vsk, djtodoro, NikolaPrica
      
      Reviewed By: vsk
      
      Subscribers: ychen, hiraditya, llvm-commits
      
      Tags: #debug-info, #llvm
      
      Differential Revision: https://reviews.llvm.org/D67225
      
      llvm-svn: 371333
      5a583665
    • David Stenberg's avatar
      [NFC] Make the describeLoadedValue() hook return machine operand objects · 8b70139e
      David Stenberg authored
      Summary:
      This changes the ParamLoadedValue pair which the describeLoadedValue()
      hook returns so that MachineOperand objects are returned instead of
      pointers.
      
      When describing call site values we may need to describe operands which
      are not part of the instruction. One such example is zero-materializing
      XORs on x86, which I have implemented support for in a child revision.
      Instead of having to return a pointer to an operand stored somewhere
      outside the instruction, start returning objects directly instead, as
      that simplifies the code.
      
      The MachineOperand class only holds POD members, and on x86-64 it is 32
      bytes large. That combined with copy elision means that the overhead of
      returning a machine operand object from the hook does not become very
      large.
      
      I benchmarked this on a 8-thread i7-8650U machine with 32 GB RAM. The
      benchmark consisted of building a clang 8.0 binary configured with:
      
        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
        -DLLVM_TARGETS_TO_BUILD=X86 \
        -DLLVM_USE_SANITIZER=Address \
        -DCMAKE_CXX_FLAGS="-Xclang -femit-debug-entry-values -stdlib=libc++"
      
      The average wall clock time increased by 4 seconds, from 62:05 to
      62:09, which is an 0.1% increase.
      
      Reviewers: aprantl, vsk, djtodoro, NikolaPrica
      
      Reviewed By: vsk
      
      Subscribers: hiraditya, ychen, llvm-commits
      
      Tags: #debug-info, #llvm
      
      Differential Revision: https://reviews.llvm.org/D67261
      
      llvm-svn: 371332
      8b70139e
    • David Green's avatar
      [ARM] Remove declaration of unimplemented function. NFC. · df2501ad
      David Green authored
      llvm-svn: 371331
      df2501ad
    • Simon Pilgrim's avatar
      [X86][SSE] Fix out of range shift introduced in D67070/rL371328 · 178cd2cd
      Simon Pilgrim authored
      Use APInt to create the comparison mask instead.
      
      llvm-svn: 371330
      178cd2cd
    • Simon Pilgrim's avatar
      [X86] Add test case for PR32546 · 9d570020
      Simon Pilgrim authored
      llvm-svn: 371329
      9d570020
    • Simon Pilgrim's avatar
      [X86][SSE] Add support for <64 x i1> bool reduction · 32620843
      Simon Pilgrim authored
      This generalizes the existing <32 x i1> pre-AVX2 split code to support reductions from <64 x i1> as well, we can probably generalize to any larger pow2 case in the future if the (unlikely) need ever arises.
      
      We still need to tweak combineBitcastvxi1 to improve AVX512F codegen as its assumes vXi1 types should be handled on the mask registers even when they aren't legal.
      
      Differential Revision: https://reviews.llvm.org/D67070
      
      llvm-svn: 371328
      32620843
    • Xing GUO's avatar
      [StackMap] Current stackmap version should be 3. NFC. · acf81f42
      Xing GUO authored
      llvm-svn: 371327
      acf81f42
    • Leonard Chan's avatar
      [NewPM][Sancov] Create the Sancov Pass after building the pipelines · 486b173c
      Leonard Chan authored
      We're running into linker errors from missing sancov sections:
      
      ```
      ld.lld: error: relocation refers to a discarded section: __sancov_guards
      >>> defined in user-arm64-ubsan-sancov-full.shlib/obj/third_party/ulib/scudo/scudo.wrappers_c.cc.o
      >>> referenced by common.h:26 (../../zircon/third_party/ulib/scudo/common.h:26)
      ... many other references
      ```
      
      I believe this is due to a pass in the default pipeline that somehow discards
      these sections. The ModuleSanitizerCoveragePass was initially added at the
      start of the pipeline. This now adds it to the end of the pipeline for
      optimized and unoptimized builds.
      
      Differential Revision: https://reviews.llvm.org/D67323
      
      llvm-svn: 371326
      486b173c
    • Craig Topper's avatar
      [X86] Make getZeroVector return floating point vectors in their native type on SSE2 and later. · 37dd5929
      Craig Topper authored
      isel used to require zero vectors to be canonicalized to a single
      type to minimize the number of patterns needed to match. This is
       no longer required.
      
      I plan to do this to integers too, but floating point was simpler
      to start with. Integer has a complication where v32i16/v64i8 aren't
      legal when the other 512-bit integer types are.
      
      llvm-svn: 371325
      37dd5929
    • Dimitry Andric's avatar
      Remove ::gets for FreeBSD 13 and later · 5bd4a480
      Dimitry Andric authored
      Summary:
      In https://svnweb.freebsd.org/changeset/base/351659 @emaste removed gets() from
      FreeBSD 13's libc, and our copies of libc++ and libstdc++.  In that change, the
      declarations were simply deleted, but I would like to propose this conditional
      test instead.
      
      Reviewers: EricWF, mclow.lists, emaste
      
      Reviewed By: mclow.lists
      
      Subscribers: krytarowski, christof, ldionne, emaste, libcxx-commits
      
      Differential Revision: https://reviews.llvm.org/D67316
      
      llvm-svn: 371324
      5bd4a480