1. Oct 02, 2019
    • Haojian Wu's avatar
      [clangd] Bail out early if we are sure that the symbol is used outside of the file. · d44fc23a
      Haojian Wu authored
      Summary:
      This would reduce the false positive when the static index is in an
      unavailable state, e.g. background index is not finished.
      
      Reviewers: sammccall
      
      Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D68325
      
      llvm-svn: 373444
      d44fc23a
    • Sam McCall's avatar
      [clangd] SelectionTree should mark a node as fully-selected if the only... · 20c5fbb1
      Sam McCall authored
      [clangd] SelectionTree should mark a node as fully-selected if the only claimed tokens were early-claimed.
      
      Summary:
      Previously they would be marked as partially-selected based on the early claim,
      and never updated as no more tokens were claimed.
      This affects simple VarDecls like "int x".
      
      Reviewers: SureYeaah
      
      Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D66872
      
      llvm-svn: 373442
      20c5fbb1
    • Sam McCall's avatar
      [ClangFormat] relnotes for r373439 · 08bfd9e4
      Sam McCall authored
      llvm-svn: 373441
      08bfd9e4
    • Haojian Wu's avatar
      [clang-rename] Better renaming the typedef decl. · fbd134f9
      Haojian Wu authored
      Summary:
      when renaming a typedef decl, we used to rename the underlying decl of the
      typedef, we should rename the typedef itself.
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D68322
      
      llvm-svn: 373440
      fbd134f9
    • Sam McCall's avatar
      [ClangFormat] Future-proof Standard option, allow floating or pinning to arbitrary lang version · e5032567
      Sam McCall authored
      Summary:
      The historical context:
      - clang-format was written when C++11 was current,
        and the main language-version concern was >> vs > > template-closers.
        An option was added to allow selection of the 03/11 behavior, or auto-detection.
      - there was no option to choose simply "latest standard" so anyone who didn't
        ever want 03 behavior or auto-detection specified Cpp11.
      - In r185149 this option started to affect lexer mode.
      - no options were added to cover c++14, as parsing/formatting
        didn't change that much. The usage of Cpp11 to mean "latest" became
        codified e.g. in r206263
      - c++17 added some new constructs. These were mostly backwards-compatible and so
        not used in old programs, so having no way to turn them off was OK.
      - c++20 added some new constructs and keywords (e.g. co_*) that changed the
        meaning of existing programs, and people started to complain that
        the c++20 parsing couldn't be turned off.
      
      New plan:
       - Default ('Auto') behavior remains unchanged: parse as latest, format
         template-closers based on input.
       - Add new 'Latest' option that more clearly expresses the intent "use
         modern features" that many projects have chosen for their .clang-format files.
       - Allow pinning to *any* language version, using the same name as clang -std:
         c++03, c++11, c++14 etc. These set precise lexer options, and any
         clang-format code depending on these can use a >= check.
       - For backwards compatibility, `Cpp11` is an alias for `Latest`, not `c++11`.
         This matches the historical documented semantics of this option.
         This spelling (and `Cpp03`) are deprecated.
      
      Reviewers: klimek, modocache
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D67541
      
      llvm-svn: 373439
      e5032567
    • Nico Weber's avatar
      gn build: (manually) merge r373425 · b54302e3
      Nico Weber authored
      llvm-svn: 373438
      b54302e3
    • Kerry McLaughlin's avatar
      [IntrinsicEmitter] Add overloaded type VecOfBitcastsToInt for SVE intrinsics · 76365b3b
      Kerry McLaughlin authored
      Summary:
      This allows intrinsics such as the following to be defined:
       - declare <n x 4 x i32> @llvm.something.nxv4f32(<n x 4 x i32>, <n x 4 x i1>, <n x 4 x float>)
      
      ...where <n x 4 x i32> is derived from <n x 4 x float>, but
      the element needs bitcasting to int.
      
      Reviewers: c-rhodes, sdesmalen, rovka
      
      Reviewed By: c-rhodes
      
      Subscribers: tschuett, hiraditya, jdoerfert, llvm-commits, cfe-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D68021
      
      llvm-svn: 373437
      76365b3b
    • Sam McCall's avatar
      [clang-tidy] Fix typo in r373428 · 442be727
      Sam McCall authored
      llvm-svn: 373436
      442be727
    • Kadir Cetinkaya's avatar
      [clangd] Always send file URIs to editors · e95e5165
      Kadir Cetinkaya authored
      Summary:
      Editors only know about file URIs, make sure we do not use any custom
      schemes while sending edits.
      
      Reviewers: sammccall
      
      Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D68324
      
      llvm-svn: 373435
      e95e5165
    • Jay Foad's avatar
      Remove an unnecessary cast. NFC. · c38188c5
      Jay Foad authored
      llvm-svn: 373434
      c38188c5
    • Jay Foad's avatar
      [AMDGPU] Make printf lowering faster when there are no printfs · dafda610
      Jay Foad authored
      Summary:
      Printf lowering unconditionally visited every instruction in the module.
      To make it faster in the common case where there are no printfs, look up
      the printf function (if any) and iterate over its users instead.
      
      Reviewers: rampitec, kzhuravl, alex-t, arsenm
      
      Subscribers: jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D68145
      
      llvm-svn: 373433
      dafda610
    • Florian Hahn's avatar
      47dbcbd8
    • Hans Wennborg's avatar
      Switch lowering: omit range check for bit tests when default is unreachable (PR43129) · cbefc36f
      Hans Wennborg authored
      This is modeled after the same functionality for jump tables, which was
      added in r357067.
      
      Differential revision: https://reviews.llvm.org/D68131
      
      llvm-svn: 373431
      cbefc36f
    • Florian Hahn's avatar
      [GlobalOpt] Pass DTU to removeUnreachableBlocks instead of recomputing. · 70f70035
      Florian Hahn authored
      removeUnreachableBlocks knows how to preserve the DomTree, so make use
      of it instead of re-computing the DT.
      
      Reviewers: davide, kuhar, brzycki
      
      Reviewed By: davide, kuhar
      
      Differential Revision: https://reviews.llvm.org/D68298
      
      llvm-svn: 373430
      70f70035
    • Florian Hahn's avatar
      [Local] Simplify function removeUnreachableBlocks() to avoid (re-)computation. · 167b0529
      Florian Hahn authored
      Two small changes in llvm::removeUnreachableBlocks() to avoid unnecessary (re-)computation.
      
      First, replace the use of count() with find(), which has better time complexity.
      
      Second, because we have already computed the set of dead blocks, replace the second loop over all basic blocks to a loop only over the already computed dead blocks. This simplifies the loop and avoids recomputation.
      
      Patch by Rodrigo Caetano Rocha <rcor.cs@gmail.com>
      
      Reviewers: efriedma, spatel, fhahn, xbolva00
      
      Reviewed By: fhahn, xbolva00
      
      Differential Revision: https://reviews.llvm.org/D68191
      
      llvm-svn: 373429
      167b0529
    • Adam Balogh's avatar
      [clang-tidy] Fix for commits rL372706 and rL372711 · 1c571437
      Adam Balogh authored
      The patch committed was not the accepted version but the
      previous one. This commit fixes this issue.
      
      Differential Revision: https://reviews.llvm.org/D64736
      
      llvm-svn: 373428
      1c571437
    • Djordje Todorovic's avatar
      Reland "[utils] Implement the llvm-locstats tool" · 2ef18fb4
      Djordje Todorovic authored
      The tool reports verbose output for the DWARF debug location coverage.
      The llvm-locstats for each variable or formal parameter DIE computes what
      percentage from the code section bytes, where it is in scope, it has
      location description. The line 0 shows the number (and the percentage) of
      DIEs with no location information, but the line 100 shows the number (and
      the percentage) of DIEs where there is location information in all code
      section bytes (where the variable or parameter is in the scope). The line
      50..59 shows the number (and the percentage) of DIEs where the location
      information is in between 50 and 59 percentage of its scope covered.
      
      Differential Revision: https://reviews.llvm.org/D66526
      
      The cause of the test failure was resolved.
      
      llvm-svn: 373427
      2ef18fb4
    • Rui Ueyama's avatar
      [llvm-lib] Detect duplicate input files · 60e9df33
      Rui Ueyama authored
      Differential Revision: https://reviews.llvm.org/D68320
      
      llvm-svn: 373426
      60e9df33
    • John McCall's avatar
      Rename TypeNodes.def to TypeNodes.inc for consistency across all · 36b12a86
      John McCall authored
      our autogenerated files.  NFC.
      
      As requested by Nico Weber.
      
      llvm-svn: 373425
      36b12a86
    • Rui Ueyama's avatar
      [llvm-lib] Correctly handle .lib input files · 64a362e7
      Rui Ueyama authored
      If archive files are passed as input files, llvm-lib needs to append
      the members of the input archive files to the output file. This patch
      implements that behavior.
      
      This patch splits an existing function into smaller functions.
      Effectively, the new code is only `if (Magic == file_magic::archive)
      { ... }` part.
      
      Fixes https://bugs.llvm.org/show_bug.cgi?id=32674
      
      Differential Revision: https://reviews.llvm.org/D68204
      
      llvm-svn: 373424
      64a362e7
    • Craig Topper's avatar
      [X86] Add broadcast load folding patterns to the NoVLX compare patterns. · 8d6a863b
      Craig Topper authored
      These patterns use zmm registers for 128/256-bit compares when
      the VLX instructions aren't available. Previously we only
      supported registers, but as PR36191 notes we can fold broadcast
      loads, but not regular loads.
      
      llvm-svn: 373423
      8d6a863b
    • Michael Liao's avatar
      Fix GCC -Wreturn-type warnings. NFC. · c3aab6ea
      Michael Liao authored
      llvm-svn: 373422
      c3aab6ea
    • Richard Trieu's avatar
      Revert r368237 - Update fix-it hints for std::move warnings. · e3887253
      Richard Trieu authored
      r368237 attempted to improve fix-its for move warnings, but introduced some
      regressions to -Wpessimizing-move.  Revert that change and add the missing
      test cases to the pessimizing move test to prevent future regressions.
      
      llvm-svn: 373421
      e3887253
    • David Blaikie's avatar
    • Nico Weber's avatar
      gn build: (manually) merge r373407 · 9e763e1b
      Nico Weber authored
      llvm-svn: 373419
      9e763e1b
    • Richard Smith's avatar
      Fix crash on constant-evaluation of pseudo-destruction of a pointer. · 5e18f4db
      Richard Smith authored
      We got confused and thought we might be pseudo-destroying the pointee
      instead.
      
      llvm-svn: 373418
      5e18f4db
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Use getIntrinsicID helper · 86f864da
      Matt Arsenault authored
      llvm-svn: 373417
      86f864da
    • John McCall's avatar
      Remove TypeNodes.def from the modulemap. · c60a8242
      John McCall authored
      We currently just look for files named in the modulemap in its
      associated source directory.  This means that we can't name
      generated files, like TypeNodes.def now is, which means we can't
      explicitly mark it as textual.  But fortunately that's okay
      because (as I understand it) the most important purpose of naming
      the header in the modulemap is to ensure that it's not treated as
      public, and the search for public headers also only considers
      files in the associated source directory.  This isn't an elegant
      solution, since among other things it means that a build which
      wrote the generated files directly into the source directory would
      result in something that wouldn't build as a module, but that's
      a problem for all our other generated files as well.
      
      llvm-svn: 373416
      c60a8242
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Assume VGPR for G_FRAME_INDEX · cdfe5efe
      Matt Arsenault authored
      In principle this should behave as any other constant. However
      eliminateFrameIndex currently assumes a VALU use and uses a vector
      shift. Work around this by selecting to VGPR for now until
      eliminateFrameIndex is fixed.
      
      llvm-svn: 373415
      cdfe5efe
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Private loads always use VGPRs · bfce0c26
      Matt Arsenault authored
      llvm-svn: 373414
      bfce0c26
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Legalize 1024-bit G_BUILD_VECTOR · 05aa8a73
      Matt Arsenault authored
      This will be needed to support AGPR operations.
      
      llvm-svn: 373413
      05aa8a73
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Fix RegBankSelect for 1024-bit values · 3a657afb
      Matt Arsenault authored
      llvm-svn: 373412
      3a657afb
    • Stanislav Mekhanoshin's avatar
      [AMDGPU] separate accounting for agprs · 075bc48a
      Stanislav Mekhanoshin authored
      Account and report agprs separately on gfx908. Other targets
      do not change the reporting.
      
      Differential Revision: https://reviews.llvm.org/D68307
      
      llvm-svn: 373411
      075bc48a
    • Michael Liao's avatar
      Fix unused variable warning. NFCI. · d838cf76
      Michael Liao authored
      llvm-svn: 373410
      d838cf76
    • Adrian Prantl's avatar
      Make yet another attempt in restoring SymbolFilePDBTests · e2385e08
      Adrian Prantl authored
      The original test was passing false to the append argument of
      FindTypes (the only use of this feature!). This patch now replicates
      that by passing a fresh TypeMap into the function where applicable.
      
      llvm-svn: 373409
      e2385e08
    • Craig Topper's avatar
      [X86] Add a DAG combine to shrink vXi64 gather/scatter indices that are... · 8c19925f
      Craig Topper authored
      [X86] Add a DAG combine to shrink vXi64 gather/scatter indices that are constant with sufficient sign bits to fit in vXi32
      
      The gather/scatter instructions can implicitly sign extend the indices. If we're operating on 32-bit data, an v16i64 index can force a v16i32 gather to be split in two since the index needs 2 registers. If we can shrink the index to the i32 we can avoid the split. It should always be safe to shrink the index regardless of the number of elements. We have gather/scatter instructions that can use v2i32 index stored in a v4i32 register with v2i64 data size.
      
      I've limited this to before legalize types to avoid creating a v2i32 after type legalization. We could check for it, but we'd also need testing. I'm also only handling build_vectors with no bitcasts to be sure the truncate will constant fold.
      
      Differential Revision: https://reviews.llvm.org/D68247
      
      llvm-svn: 373408
      8c19925f
    • John McCall's avatar
      Emit TypeNodes.def with tblgen. · a82d2fe9
      John McCall authored
      The primary goal here is to make the type node hierarchy available to
      other tblgen backends, although it should also make it easier to generate
      more selective x-macros in the future.
      
      Because tblgen doesn't seem to allow backends to preserve the source
      order of defs, this is not NFC because it significantly re-orders IDs.
      I've fixed the one (fortunately obvious) place where we relied on
      the old order.  Unfortunately, I wasn't able to share code with the
      existing AST-node x-macro generators because the x-macro schema we use
      for types is different in a number of ways.  The main loss is that
      subclasses aren't ordered together, which doesn't seem important for
      types because the hierarchy is generally very shallow with little
      clustering.
      
      llvm-svn: 373407
      a82d2fe9
    • John McCall's avatar
      Use scope qualifiers in Clang's tblgen backends to get useful · c45f8d49
      John McCall authored
      redeclaration checking.  NFC.
      
      llvm-svn: 373406
      c45f8d49
    • Dan Liew's avatar
      [CMake] Fix the value of `config.target_cflags` for non-macOS Apple platforms. Attempt #3. · bbde056b
      Dan Liew authored
      The main problem here is that `-*-version_min=` was not being passed to
      the compiler when building test cases. This can cause problems when
      testing on devices running older OSs because Clang would previously
      assume the minimum deployment target is the the latest OS in the SDK
      which could be much newer than what the device is running.
      
      Previously the generated value looked like this:
      
      `-arch arm64 -isysroot
      <path_to_xcode>/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk`
      
      With this change it now looks like:
      
      `-arch arm64 -stdlib=libc++ -miphoneos-version-min=8.0 -isysroot
      <path_to_xcode>/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk`
      
      This mirrors the setting of config.target_cflags on macOS.
      
      This change is made for ASan, LibFuzzer, TSan, and UBSan.
      
      To implement this a new `get_test_cflags_for_apple_platform()` function
      has been added that when given an Apple platform name and architecture
      returns a string containing the C compiler flags to use when building
      tests. This also calls a new helper function `is_valid_apple_platform()`
      that validates Apple platform names.
      
      This is the third attempt at landing the patch.
      
      The first attempt (r359305) had to be reverted (r359327) due to a buildbot
      failure. The problem was that calling `get_test_cflags_for_apple_platform()`
      can trigger a CMake error if the provided architecture is not supported by the
      current CMake configuration. Previously, this could be triggered by passing
      `-DCOMPILER_RT_ENABLE_IOS=OFF` to CMake. The root cause is that we were
      generating test configurations for a list of architectures without checking if
      the relevant Sanitizer actually supported that architecture. We now intersect
      the list of architectures for an Apple platform with
      `<SANITIZER>_SUPPORTED_ARCH` (where `<SANITIZER>` is a Sanitizer name) to
      iterate through the correct list of architectures.
      
      The second attempt (r363633) had to be reverted (r363779) due to a build
      failure. The failed build was using a modified Apple toolchain where the iOS
      simulator SDK was missing. This exposed a bug in the existing UBSan test
      generation code where it was assumed that `COMPILER_RT_ENABLE_IOS` implied that
      the toolchain supported both iOS and the iOS simulator. This is not true. This
      has been fixed by using the list `SANITIZER_COMMON_SUPPORTED_OS` for the list
      of supported Apple platforms for UBSan. For consistency with the other
      Sanitizers we also now intersect the list of architectures with
      UBSAN_SUPPORTED_ARCH.
      
      rdar://problem/50124489
      
      Differential Revision: https://reviews.llvm.org/D61242
      
      llvm-svn: 373405
      bbde056b
    • Changpeng Fang's avatar
      AMDGPU: Fix an out of date assert in addressing FrameIndex · e4ee28d1
      Changpeng Fang authored
      Reviewers:
        arsenm
      
      Differential Revision:
        https://reviews.llvm.org/D67574
      
      llvm-svn: 373404
      e4ee28d1