1. Nov 22, 2022
    • Arthur Eubanks's avatar
      [lldb] Disable looking at pointee types to find synthetic value for non-ObjC · 8b80e8ee
      Arthur Eubanks authored
      After D134378, we started seeing crashes with incomplete types (in the
      context of shared libraries).
      
      When trying to print a `std::vector<int> &` with only debug info for a
      declaration, we now try to use the formatter after D134378. With an
      incomplete type, this somehow goes into infinite recursion with the
      frames
      
      ```
      lldb_private::ValueObject::Dereference
      lldb_private::ValueObjectSynthetic::CreateSynthFilter
      lldb_private::ValueObjectSynthetic::ValueObjectSynthetic
      lldb_private::ValueObject::CalculateSyntheticValue
      lldb_private::ValueObject::HasSyntheticValue
      ```
      
      This has to do with `FrontEndWantsDereference` that some STL formatters
      set, causing recursion between the formatter (which tries to dereference),
      and dereferencing (which wants to know if there's a formatter to avoid dereferencing).
      
      The reason this only started appearing after D134378 was because
      previously with incomplete types, for names with `<`, lldb would attempt
      to parse template parameter DIEs, which were empty, then create an empty
      `ClassTemplateSpecializationDecl` which overrode the name used to lookup
      a formatter in `FormattersMatchData()` to not include template
      parameters (e.g. `std::vector<> &`). After D134378 we don't create a
      `ClassTemplateSpecializationDecl` when there are no template parameters
      and the name to lookup a formatter is the original name (e.g.
      `std::vector<int> &`).
      
      The code to try harder with incomplete child compiler types was added in
      D79554 for ObjC purposes.
      
      Reviewed By: labath
      
      Differential Revision: https://reviews.llvm.org/D137983
      8b80e8ee
    • Benjamin Kramer's avatar
      [bazel] Port d6abdf46 · 7f9e8996
      Benjamin Kramer authored
      7f9e8996
    • Simon Pilgrim's avatar
      [X86] Synchronise scheduler classes of... · 746cf4f1
      Simon Pilgrim authored
      [X86] Synchronise scheduler classes of VPERM2F128/VBROADCASTF128/VEXTRACTF128/VINSERTF128 with I128 equivalents
      
      znver1/znver2 has barely any difference in behaviour between the AVX1/2 variants of these instructions - it looks like it was a copy+paste mistake to miss the AVX2 integer domain instructions in the overrides.
      
      Having said that the override numbers don't appear to match the numbers in the AMD 17h SoGs very well - for instance vperm2f128/vperm2i128 might be microcoded from the AMD sense of >3 uops, but it doesn't have a 100cy latency..... These will need to be further addressed.
      746cf4f1
    • Krzysztof Drewniak's avatar
      [mlir][AMDGPU] Remove buffer ops that are statically out of bounds · d6abdf46
      Krzysztof Drewniak authored
      When the bounds check attribute is true, the raw buffer load, store,
      and atomic operations have well-defined behavior (returning 0 for
      loads and ignoring stores) when the buffer access exceeds the bounds
      of the memory being accessed.
      
      Because of how LLVM currently implements these buffer operations (as
      opaque intrinsics), the backend cannot optimize out this known
      behavior and eliminate the memory operations. Therefore, use MLIR's
      canonicalization system to eliminate these operations.
      
      Reviewed By: nirvedhmeshram
      
      Differential Revision: https://reviews.llvm.org/D138146
      d6abdf46
    • Sander de Smalen's avatar
      [AArch64][SME] Always allocate a lazy-save buffer if a function has ZA state. · 3f9d64a2
      Sander de Smalen authored
      We already do this for most cases, with the exception of instructions that
      get expanded to function calls (e.g. for lowering operations on fp128
      values), in which case we temporarily allocate a lazy-save buffer.
      
      The code that is generated in this case, is however incorrect, as it seems
      to pass an incorrect address for the TPIDR2 object to the ZA restore
      function. By always allocating the lazy-save buffer once, we avoid this
      issue entirely.
      
      The cost is that we also allocate such a buffer when it is not
      needed. We could fix that in a follow-up patch, where we remove the
      lazy-save buffer when it isn't used.
      
      Reviewed By: paulwalker-arm
      
      Differential Revision: https://reviews.llvm.org/D138208
      3f9d64a2
    • Jordan Rupprecht's avatar
      [test][lldb-vscode] Un-realpath coreFile test. · ae7a3e1c
      Jordan Rupprecht authored
      TestVSCode_coreFile looks for an exe/core file in the same directory as the test. It first calls `realpath`, but I don't think it's necessary. Using `realpath` prevents this test from working when run as part of a build system that uses content-addressed-storage, i.e. all the files might all be symlinks in the same directory pointing to files in different directories elsewhere. If some amount of normalization is needed, maybe `os.path.normpath()` would be useful, although I wouldn't see why that's needed either.
      
      (This is a fairly trivial patch, but I'm mailing it to see if there is a reason we need to keep `realpath`, and if so, if there's some other workaround we can do).
      
      Differential Revision: https://reviews.llvm.org/D138345
      ae7a3e1c
    • John Brawn's avatar
      [FPEnv] Enable strict fp for AArch64 in clang · 9e3264ab
      John Brawn authored
      The AArch64 target now has the necessary support for strict fp, so
      enable it in clang.
      
      Differential Revision: https://reviews.llvm.org/D138143
      9e3264ab
    • Louis Dionne's avatar
  2. Nov 21, 2022