Skip to content
  1. Jul 20, 2018
    • Zachary Turner's avatar
      Rewrite the VS integration scripts. · 83226b91
      Zachary Turner authored
      This is a new modernized VS integration installer.  It adds a
      Visual Studio .sln file which, when built, outputs a VSIX that can
      be used to install ourselves as a "real" Visual Studio Extension.
      We can even upload this extension to the visual studio marketplace.
      
      This fixes a longstanding problem where we didn't support installing
      into VS 2017 and higher.  In addition to supporting VS 2017, due
      to the way this is written we now longer need to do anything special
      to support future versions of VS as well.  Everything should
      "just work".  This also fixes several bugs with our old integration,
      such as MSBuild triggering full rebuilds when /Zi was used.
      
      Finally, we add a new UI page called "LLVM" which becomes visible
      when the LLVM toolchain is selected.  For now this only contains
      one option which is the path to clang-cl.exe, but in the future
      we can add more things here.
      
      Differential Revision: https://reviews.llvm.org/D42762
      
      llvm-svn: 337572
      83226b91
    • Alexander Potapenko's avatar
      [MSan] run materializeChecks() before materializeStores() · 5ff3abbc
      Alexander Potapenko authored
      When pointer checking is enabled, it's important that every pointer is
      checked before its value is used.
      For stores MSan used to generate code that calculates shadow/origin
      addresses from a pointer before checking it.
      For userspace this isn't a problem, because the shadow calculation code
      is quite simple and compiler is able to move it after the check on -O2.
      But for KMSAN getShadowOriginPtr() creates a runtime call, so we want the
      check to be performed strictly before that call.
      
      Swapping materializeChecks() and materializeStores() resolves the issue:
      both functions insert code before the given IR location, so the new
      insertion order guarantees that the code calculating shadow address is
      between the address check and the memory access.
      
      llvm-svn: 337571
      5ff3abbc
    • Simon Pilgrim's avatar
      [X86][SSE] Use SplitOpsAndApply to improve HADD/HSUB lowering · c7132031
      Simon Pilgrim authored
      Improve AVX1 256-bit vector HADD/HSUB matching by using SplitOpsAndApply to split into 128-bit instructions.
      
      llvm-svn: 337568
      c7132031
    • Stella Stamenova's avatar
      [llvm-objcopy, tests] Fix several llvm-objcopy tests · ca0547c8
      Stella Stamenova authored
      Summary: In Python 3, sys.stdout.write expects a string rather than bytes. In order to be able to write the bytes to stdout, we need to use the buffer directly instead. This change is borrowing the implementation for writing to stdout that cat.py uses. Note that we cannot use cat.py directly because the file we are trying to open is a gzip file.
      
      Reviewers: asmith, bkramer, alexshap, jakehehrlich
      
      Reviewed By: alexshap, jakehehrlich
      
      Subscribers: jakehehrlich, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D49515
      
      llvm-svn: 337567
      ca0547c8
    • Simon Pilgrim's avatar
    • Simon Pilgrim's avatar
      [X86][AVX] Add v16i16 horizontal op redundant shuffle tests · a2bc2d48
      Simon Pilgrim authored
      llvm-svn: 337565
      a2bc2d48
    • Pavel Labath's avatar
      Fix build breakage from r337562 · 0120691f
      Pavel Labath authored
      I changed a variable's type from pointer to reference, but forgot to
      update the assert-only code.
      
      llvm-svn: 337564
      0120691f
    • Nirav Dave's avatar
      [DAG] Avoid Node Update assertion due to AND simplification · 25802ac9
      Nirav Dave authored
      Check for construction-time folding for incomplete AND nodes in
      BackwardsPropagateMask.
      
      Fixes PR38185.
      
      Reviewers: RKSimon, samparker
      
      Reviewed By: samparker
      
      Subscribers: llvm-commits, hiraditya
      
      Differential Revision: https://reviews.llvm.org/D49444
      
      llvm-svn: 337563
      25802ac9
    • Pavel Labath's avatar
      DwarfDebug: Reduce duplication in addAccel*** methods · 7f7e6069
      Pavel Labath authored
      Summary:
      Each of the four methods had a dozen lines and was doing almost exactly
      the same thing: get the appropriate accelerator table kind and insert an
      entry into it. I move this common logic to a helper function and make
      these methods delegate to it.
      
      This came up in the context of D49493, where I've needed to make adding
      a string to a string pool slightly more complicated, and it seemed to
      make sense to do it in one place instead of five.
      
      To make this work I've needed to unify the interface of the AccelTable
      data types, as some used to store DIE& and others DIE*. I chose to unify
      to a reference as that's what the caller uses.
      
      This technically isn't NFC, because it changes the StringPool used for
      apple tables in the DWO case (now it uses the main file like DWARF v5
      instead of the DWO file). However, that shouldn't matter, as DWO is not
      a thing on apple targets (clang frontend simply ignores -gsplit-dwarf).
      
      Reviewers: JDevlieghere, aprantl, probinson
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D49542
      
      llvm-svn: 337562
      7f7e6069
    • Simon Pilgrim's avatar
    • Nirav Dave's avatar
      [DAG] Fix Memory ordering check in ReduceLoadOpStore. · 5a4e11ad
      Nirav Dave authored
      When merging through a TokenFactor we need to check that the
      load may be ordered such that no other aliasing memory operations may
      happen. It is not sufficient to just check that the load is a member
      of the chain token factor as it there may be a indirect chain. Require
      the load's chain has only one use.
      
      This fixes PR37826.
      
      Reviewers: spatel, davide, efriedma, craig.topper, RKSimon
      
      Subscribers: hiraditya, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D49388
      
      llvm-svn: 337560
      5a4e11ad
    • Reka Kovacs's avatar
      [analyzer] Rename DanglingInternalBufferChecker to InnerPointerChecker. · 88ad704b
      Reka Kovacs authored
      Differential Revision: https://reviews.llvm.org/D49553
      
      llvm-svn: 337559
      88ad704b
    • Simon Pilgrim's avatar
      [X86][AVX] Add 256-bit vector horizontal op redundant shuffle tests · 8342126c
      Simon Pilgrim authored
      llvm-svn: 337558
      8342126c
    • Kostya Kortchinsky's avatar
      [scudo] Simplify internal names (NFC) · cccd21d4
      Kostya Kortchinsky authored
      Summary:
      There is currently too much redundancy in the class/variable/* names in Scudo:
      - we are in the namespace `__scudo`, so there is no point in having something
        named `ScudoX` to end up with a final name of `__scudo::ScudoX`;
      - there are a lot of types/* that have `Allocator` in the name, given that
        Scudo is an allocator I figure this doubles up as well.
      
      So change a bunch of the Scudo names to make them shorter, less redundant, and
      overall simpler. They should still be pretty self explaining (or at least it
      looks so to me).
      
      The TSD part will be done in another CL (eg `__scudo::ScudoTSD`).
      
      Reviewers: alekseyshl, eugenis
      
      Reviewed By: alekseyshl
      
      Subscribers: delcypher, #sanitizers, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D49505
      
      llvm-svn: 337557
      cccd21d4
    • Bruno Cardoso Lopes's avatar
      534f4e6d
    • Florian Hahn's avatar
      [IPSCCP] Fix for bot failure caused by r337548 · ec3ca89a
      Florian Hahn authored
      llvm-svn: 337554
      ec3ca89a
    • Erich Keane's avatar
      Implement cpu_dispatch/cpu_specific Multiversioning · 3efe0020
      Erich Keane authored
      As documented here: https://software.intel.com/en-us/node/682969 and
      https://software.intel.com/en-us/node/523346. cpu_dispatch multiversioning
      is an ICC feature that provides for function multiversioning.
      
      This feature is implemented with two attributes: First, cpu_specific,
      which specifies the individual function versions. Second, cpu_dispatch,
      which specifies the location of the resolver function and the list of
      resolvable functions.
      
      This is valuable since it provides a mechanism where the resolver's TU
      can be specified in one location, and the individual implementions
      each in their own translation units.
      
      The goal of this patch is to be source-compatible with ICC, so this
      implementation diverges from the ICC implementation in a few ways:
      1- Linux x86/64 only: This implementation uses ifuncs in order to
      properly dispatch functions. This is is a valuable performance benefit
      over the ICC implementation. A future patch will be provided to enable
      this feature on Windows, but it will obviously more closely fit ICC's
      implementation.
      2- CPU Identification functions: ICC uses a set of custom functions to identify
      the feature list of the host processor. This patch uses the cpu_supports
      functionality in order to better align with 'target' multiversioning.
      1- cpu_dispatch function def/decl: ICC's cpu_dispatch requires that the function
      marked cpu_dispatch be an empty definition. This patch supports that as well,
      however declarations are also permitted, since the linker will solve the
      issue of multiple emissions.
      
      Differential Revision: https://reviews.llvm.org/D47474
      
      llvm-svn: 337552
      3efe0020
    • Simon Pilgrim's avatar
      Regenerate partial vector fold test. NFCI. · f907e19b
      Simon Pilgrim authored
      llvm-svn: 337551
      f907e19b
    • Dmitry Vyukov's avatar
      esan: fix shadow setup · 97cf5f7f
      Dmitry Vyukov authored
      r337531 changed return type of MmapFixedNoReserve, but esan wasn't updated.
      As the result esan shadow setup always fails.
      We probably need to make MmapFixedNoAccess signature consistent
      with MmapFixedNoReserve. But this is just to unbreak tests.
       
      
      llvm-svn: 337550
      97cf5f7f
    • Chen Zheng's avatar
      [NFC][testcases] fold sdiv if two operands are negated and non-overflow · 0f609db6
      Chen Zheng authored
      llvm-svn: 337549
      0f609db6
    • Florian Hahn's avatar
      Recommit r328307: [IPSCCP] Use constant range information for comparisons of parameters. · 0a560d5d
      Florian Hahn authored
      This version contains a fix to add values for which the state in ParamState change
      to the worklist if the state in ValueState did not change. To avoid adding the
      same value multiple times, mergeInValue returns true, if it added the value to
      the worklist. The value is added to the worklist depending on its state in
      ValueState.
      
      Original message:
      For comparisons with parameters, we can use the ParamState lattice
      elements which also provide constant range information. This improves
      the code for PR33253 further and gets us closer to use
      ValueLatticeElement for all values.
      
      Also, as we are using the range information in the solver directly, we
      do not need tryToReplaceWithConstantRange afterwards anymore.
      
      Reviewers: dberlin, mssimpso, davide, efriedma
      
      Reviewed By: mssimpso
      
      Differential Revision: https://reviews.llvm.org/D43762
      
      llvm-svn: 337548
      0a560d5d
    • Simon Pilgrim's avatar
      [X86][AVX] Convert X86ISD::VBROADCAST demanded elts combine to use SimplifyDemandedVectorElts · 6fb8b68b
      Simon Pilgrim authored
      This is an early step towards using SimplifyDemandedVectorElts for target shuffle combining - this merely moves the existing X86ISD::VBROADCAST simplification code to use the SimplifyDemandedVectorElts mechanism.
      
      Adds X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode to handle X86ISD::VBROADCAST - in time we can support all target shuffles (and other ops) here.
      
      llvm-svn: 337547
      6fb8b68b
    • Simon Pilgrim's avatar
      Regenerate remainder test. · cbf5af12
      Simon Pilgrim authored
      llvm-svn: 337546
      cbf5af12
    • Chen Zheng's avatar
      [InstSimplify] fold srem instruction if its two operands are negated. · f801d0fe
      Chen Zheng authored
      Differential Revision: https://reviews.llvm.org/D49423
      
      llvm-svn: 337545
      f801d0fe
    • Pavel Labath's avatar
      [DebugInfo] Generate .debug_names section when it makes sense · f9adc20a
      Pavel Labath authored
      Summary:
      This patch makes us generate the debug_names section in response to some
      user-facing commands (previously it was only generated if explicitly
      selected via the -accel-tables option).
      
      My goal was to make this work for DWARF>=5 (as it's an official part of
      that standard), and also, as an extension, for DWARF<5 if one is
      explicitly tuning for lldb as a debugger (because it brings a large
      performance improvement there).
      
      This is slightly complicated by the fact that the debug_names tables are
      incompatible with the DWARF v4 type units (they assume that the type
      units are in the debug_info section), and unfortunately, right now we
      generate DWARF v4-style type units even for -gdwarf-5. For this reason,
      I disable all accelerator tables if the user requested type unit
      generation. I do this even for apple tables, as they have the same
      problem (in fact generating type units for apple targets makes us crash
      even before we get around to emitting the accelerator tables).
      
      Reviewers: JDevlieghere, aprantl, dblaikie, echristo, probinson
      
      Subscribers: llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D49420
      
      llvm-svn: 337544
      f9adc20a
    • Chen Zheng's avatar
    • Ulrich Weigand's avatar
      [SystemZ] Test case formatting fixes · 9dd23b84
      Ulrich Weigand authored
      Fix systematically wrong whitespace from a prior automated change.
      
      NFC.
      
      llvm-svn: 337542
      9dd23b84
    • Sam McCall's avatar
      Revert "[LSV] Refactoring + supporting bitcasts to a type of different size" · 57743883
      Sam McCall authored
      This reverts commit r337489.
      It causes asserts to fire in some TensorFlow tests, e.g.
      tensorflow/compiler/tests/gather_test.py on GPU.
      
      Example stack trace:
      Start test case: GatherTest.testHigherRank
      assertion failed at third_party/llvm/llvm/lib/Support/APInt.cpp:819 in llvm::APInt llvm::APInt::trunc(unsigned int) const: width && "Can't truncate to 0 bits"
          @     0x5559446ebe10  __assert_fail
          @     0x55593ef32f5e  llvm::APInt::trunc()
          @     0x55593d78f86e  (anonymous namespace)::Vectorizer::lookThroughComplexAddresses()
          @     0x55593d78f2bc  (anonymous namespace)::Vectorizer::areConsecutivePointers()
          @     0x55593d78d128  (anonymous namespace)::Vectorizer::isConsecutiveAccess()
          @     0x55593d78c926  (anonymous namespace)::Vectorizer::vectorizeInstructions()
          @     0x55593d78c221  (anonymous namespace)::Vectorizer::vectorizeChains()
          @     0x55593d78b948  (anonymous namespace)::Vectorizer::run()
          @     0x55593d78b725  (anonymous namespace)::LoadStoreVectorizer::runOnFunction()
          @     0x55593edf4b17  llvm::FPPassManager::runOnFunction()
          @     0x55593edf4e55  llvm::FPPassManager::runOnModule()
          @     0x55593edf563c  (anonymous namespace)::MPPassManager::runOnModule()
          @     0x55593edf5137  llvm::legacy::PassManagerImpl::run()
          @     0x55593edf5b71  llvm::legacy::PassManager::run()
          @     0x55593ced250d  xla::gpu::IrDumpingPassManager::run()
          @     0x55593ced5033  xla::gpu::(anonymous namespace)::EmitModuleToPTX()
          @     0x55593ced40ba  xla::gpu::(anonymous namespace)::CompileModuleToPtx()
          @     0x55593ced33d0  xla::gpu::CompileToPtx()
          @     0x55593b26b2a2  xla::gpu::NVPTXCompiler::RunBackend()
          @     0x55593b21f973  xla::Service::BuildExecutable()
          @     0x555938f44e64  xla::LocalService::CompileExecutable()
          @     0x555938f30a85  xla::LocalClient::Compile()
          @     0x555938de3c29  tensorflow::XlaCompilationCache::BuildExecutable()
          @     0x555938de4e9e  tensorflow::XlaCompilationCache::CompileImpl()
          @     0x555938de3da5  tensorflow::XlaCompilationCache::Compile()
          @     0x555938c5d962  tensorflow::XlaLocalLaunchBase::Compute()
          @     0x555938c68151  tensorflow::XlaDevice::Compute()
          @     0x55593f389e1f  tensorflow::(anonymous namespace)::ExecutorState::Process()
          @     0x55593f38a625  tensorflow::(anonymous namespace)::ExecutorState::ScheduleReady()::$_1::operator()()
      *** SIGABRT received by PID 7798 (TID 7837) from PID 7798; ***
      
      llvm-svn: 337541
      57743883
    • Yaxun Liu's avatar
      Sema: Fix explicit address space cast in C++ · 99a9f759
      Yaxun Liu authored
      Currently clang does not allow implicit cast of a pointer to a pointer type
      in different address space but allows C-style cast of a pointer to a pointer
      type in different address space. However, there is a bug in Sema causing
      incorrect Cast Expr in AST for the latter case, which in turn results in
      invalid LLVM IR in codegen.
      
      This is because Sema::IsQualificationConversion returns true for a cast of
      pointer to a pointer type in different address space, which in turn allows
      a standard conversion and results in a cast expression with no op in AST.
      
      This patch fixes that by let Sema::IsQualificationConversion returns false
      for a cast of pointer to a pointer type in different address space, which
      in turn disallows standard conversion, implicit cast, and static cast.
      Finally it results in an reinterpret cast and correct conversion kind is set.
      
      Differential Revision: https://reviews.llvm.org/D49294
      
      llvm-svn: 337540
      99a9f759
    • Florian Hahn's avatar
      [UBSan] Also use blacklist for 'Address; Undefined' setting · 5c608154
      Florian Hahn authored
      It looks like currently the UBSan blacklist is only applied when "Undefined" is selected.
      This patch updates the cmake file to apply it whenever Undefined is selected
       (e.g. 'Address; Undefined' ). This  allows us to use the workaround added in
      rL335525 when using AddressSan and UBSan together.
      
      Reviewers: eugenis, vitalybuka
      
      Reviewed By: eugenis
      
      Differential Revision: https://reviews.llvm.org/D49558
      
      llvm-svn: 337539
      5c608154
    • Jonas Paulsson's avatar
      [SystemZ] Reimplent SchedModel IssueWidth and WriteRes/ReadAdvance mappings. · c88d3f6a
      Jonas Paulsson authored
      As a consequence of recent discussions
      (http://lists.llvm.org/pipermail/llvm-dev/2018-May/123164.html), this patch
      changes the SystemZ SchedModels so that the IssueWidth is 6, which is the
      decoder capacity, and NumMicroOps become the number of decoder slots needed
      per instruction.
      
      In addition, the SchedWrite latencies now match the MachineInstructions
      def-operand indexes, and ReadAdvances have been added on instructions with
      one register operand and one memory operand.
      
      Review: Ulrich Weigand
      https://reviews.llvm.org/D47008
      
      llvm-svn: 337538
      c88d3f6a
    • Andrew V. Tischenko's avatar
      Improved sched model for X86 BSWAP* instrs. · ee2e3144
      Andrew V. Tischenko authored
      Differential Revision: https://reviews.llvm.org/D49477
      
      llvm-svn: 337537
      ee2e3144
    • David Carlier's avatar
      [Xray] fix c99 warning build about flexible array semantics · 12be7b7b
      David Carlier authored
      Reviewers: dberris
      
      Reviewed By: dberris
      
      Differential Revision: https://reviews.llvm.org/D49590
      
      llvm-svn: 337536
      12be7b7b
    • Matt Arsenault's avatar
      Reapply "AMDGPU: Fix handling of alignment padding in DAG argument lowering" · 4bec7d42
      Matt Arsenault authored
      Reverts r337079 with fix for msan error.
      
      llvm-svn: 337535
      4bec7d42
    • Sander de Smalen's avatar
      [AArch64][SVE] Asm: Support for bit/byte reverse operations. · 33f588ac
      Sander de Smalen authored
      This patch adds the following instructions:
      
        RBIT      reverse bits within each active elemnt (predicated), e.g.
                      rbit z0.d, p0/m, z1.d
      
                  for 8, 16, 32 and 64 bit elements.
      
        REV       reverse order of elements in data/predicate vector
                  (unpredicated), e.g.
                      rev z0.d, z1.d
                      rev p0.d, p1.d
      
                  for 8, 16, 32 and 64 bit elements.
      
        REVB      reverse order of bytes within each active element, e.g.
                      revb z0.d, p0/m, z1.d
      
                  for 16, 32 and 64 bit elements.
      
        REVH      reverse order of 16-bit half-words within each active
                  element, e.g.
                      revh z0.d, p0/m, z1.d
      
                  for 32 and 64 bit elements.
      
        REVW      reverse order of 32-bit words within each active element,
                  e.g.
                      revw z0.d, p0/m, z1.d
      
                  for 64 bit elements.
      
      llvm-svn: 337534
      33f588ac
    • Sander de Smalen's avatar
      [AArch64][SVE] Asm: Support for FTMAD instruction. · 3ed7f81c
      Sander de Smalen authored
      Floating-point trigonometric multiply-add coefficient,
      e.g.
      
        ftmad z0.h, z0.h, z1.h, #7
      
      with variants for 16, 32 and 64-bit elements.
      
      llvm-svn: 337533
      3ed7f81c
    • Eric Fiselier's avatar
      adjust incorrect comment · dc3c62f3
      Eric Fiselier authored
      llvm-svn: 337532
      dc3c62f3
    • Dmitry Vyukov's avatar
      sanitizers: consistently check result of MmapFixedNoReserve · f52726aa
      Dmitry Vyukov authored
      MmapFixedNoReserve does not terminate process on failure.
      Failure to check its result and die will always lead to harder
      to debug crashes later in execution. This was observed in Go
      processes due to some address space conflicts.
      
      Consistently check result of MmapFixedNoReserve.
      While we are here also add warn_unused_result attribute
      to prevent such bugs in future and change return type to bool
      as that's what all callers want.
      
      Reviewed in https://reviews.llvm.org/D49367
      
      llvm-svn: 337531
      f52726aa
    • Fangrui Song's avatar
      Change \t to spaces · 99337e24
      Fangrui Song authored
      llvm-svn: 337530
      99337e24
    • Eric Liu's avatar
      [Index] Set OrigD before D is changed. · 3e0051bb
      Eric Liu authored
      Reviewers: akyrtzi, arphaman
      
      Reviewed By: akyrtzi
      
      Subscribers: cfe-commits
      
      Differential Revision: https://reviews.llvm.org/D49476
      
      llvm-svn: 337529
      3e0051bb
Loading