1. Apr 12, 2022
  2. Apr 11, 2022
    • Sanjay Patel's avatar
      [InstCombine] try to fold low-mask of ashr to lshr · 7783db55
      Sanjay Patel authored
      With one-use, we handle this via demanded-bits.
      But We need to handle extra uses to improve issue #54750.
      
      https://alive2.llvm.org/ce/z/aDYkPv
      7783db55
    • Sanjay Patel's avatar
      141892d4
    • Florian Hahn's avatar
      Revert "[LICM] Only create load in pre-header when promoting load." · 1ddc7196
      Florian Hahn authored
      This reverts commit 42229b96.
      
      This appears to cause crashes on multiple bots.
      1ddc7196
    • Kadir Cetinkaya's avatar
      [clangd] Performance improvements and cleanup · 001e88ac
      Kadir Cetinkaya authored
      - Inline SymbolID hashing to header
      - Don't collect references for symbols without a SymbolID
      - Store referenced symbols, rather than separately storing decls and
        macros.
      - Don't defer ref collection to end of translation unit
      - Perform const_cast when updating reference counts (~0.5% saving)
      - Introduce caching for getSymbolID in SymbolCollector. (~30% saving)
      - Don't modify symbolslab if there's no definition location
      - Don't lex the whole file to deduce spelled tokens, just lex the
        relevant piece (~8%)
      
      Overall this achieves ~38% reduction in time spent inside
      SymbolCollector compared to baseline (on my machine :)).
      
      I'd expect the last optimization to affect dynamic index a lot more, I
      was testing with clangd-indexer on clangd subfolder of LLVM. As
      clangd-indexer runs indexing of whole TU at once, we indeed see almost
      every token from every source included in the TU (hence lexing full
      files vs just lexing referenced tokens are almost the same), whereas
      during dynamic indexing we mostly index main file symbols, but we would
      touch the files defining/declaring those symbols, and lex complete files
      for nothing, rather than just the token location.
      
      The last optimization is also a functional change (added test),
      previously we used raw tokens from syntax::tokenize, which didn't
      canonicalize trigraphs/newlines in identifiers, wheres
      Lexer::getSpelling canonicalizes them.
      
      Differential Revision: https://reviews.llvm.org/D122894
      001e88ac
    • LLVM GN Syncbot's avatar
      [gn build] Port c292b606 · 5ef0ed7d
      LLVM GN Syncbot authored
      5ef0ed7d
    • Simon Pilgrim's avatar
      bbbb71ac
    • Nikita Popov's avatar
      [SimplifyLibCalls] Remove unnecessary inbounds check · 9af8cc8d
      Nikita Popov authored
      Even if the GEP is not inbounds, the GEP will have provenance of
      the global, and accessing past the extent of the global would be
      undefined behavior.
      9af8cc8d