1. Jun 28, 2023
  2. Jun 27, 2023
    • LLVM GN Syncbot's avatar
      [gn build] Port 58056ae2 · d2e7d3e6
      LLVM GN Syncbot authored
      d2e7d3e6
    • Simon Tatham's avatar
      Reland: [ELFAttributeParser] Skip unknown vendor subsections. · cb1d6ea8
      Simon Tatham authored
      An .ARM.attributes section is divided into subsections, each labelled
      with a vendor name. There is one standardised vendor name, which must
      be used for all attributes that affect compatibility. Subsections
      labelled with other vendor names can be used for optimisation
      purposes, but it has to be safe for an object file consumer to ignore
      them if it doesn't recognise the vendor name.
      
      LLD currently terminates parsing of the whole attributes section as
      soon as it encounters a subsection with a vendor name it doesn't
      recognise (which is anything other than the standard one). This can
      prevent it from detecting compatibility issues, if a standard
      subsection followed the vendor-specific one.
      
      This patch modifies the attribute parser so that unrecognised vendor
      subsections are silently skipped, and the subsections beyond them are
      still processed.
      
      (Relanded with no change from the original commit 8f208edd. I
      reverted it in 949bb7e4 due to widespread buildbot breakage,
      failing to notice that 975f71fa had already fixed the failing
      unit test. Also, the *revert* caused at least one buildbot to fail,
      because I switched the affected lld test to making %t a directory, and
      then the reverted version tried to treat it as a file without cleaning
      the output directory first.)
      
      Differential Revision: https://reviews.llvm.org/D153335
      cb1d6ea8
    • Takuya Shimizu's avatar
      [clang][ExprConstant] Fix display of syntactically-invalid note for member function calls · f6be96aa
      Takuya Shimizu authored
      This patch makes the display of member function calls more true to the user-written code by making use of the syntactical structure of the function calls.
      This patch also changes the display of conventional value-based printing from arrow operator to dot operator.
      This avoids the syntactical invalidness in notes previously caused by the display of & operator
      (lack of parentheses and reference of rvalue)
      
      Fixes https://github.com/llvm/llvm-project/issues/57081
      
      Reviewed By: cjdb
      Differential Revision: https://reviews.llvm.org/D151720
      f6be96aa
    • Igor Kirillov's avatar
      Fix the ComplexDeinterleaving bug when handling mixed reductions. · 1fce8df5
      Igor Kirillov authored
      Add a missing check that ensures that ComplexDeinterleaving for reduction
      is only analyzed for Real and Imaginary Instructions of the same type.
      
      Differential Revision: https://reviews.llvm.org/D153862
      1fce8df5
    • Youngsuk Kim's avatar
      [clang] Replace uses of CGBuilderTy::CreateElementBitCast (NFC) · 474ec694
      Youngsuk Kim authored
      Partial progress towards replacing `CreateElementBitCast`, as it no
      longer does what its name suggests. Either replace its uses with
      `Address::withElementType()`, or remove them if no longer needed.
      
      Reviewed By: barannikov88, nikic
      
      Differential Revision: https://reviews.llvm.org/D153314
      474ec694
    • Jeremy Morse's avatar
      [DebugInfo][InstrRef] Instrument x86 CMOV conversion to preserve variable values · 2325e011
      Jeremy Morse authored
      X86's CMOV conversion transforms CMOV instructions into control flow between
      blocks, meaning the value is computed by a PHI rather than a "real" machine
      instruction. In instruction-referencing mode, we need to transfer the
      instruction label between the old CMOV and the new PHI instruction to mark
      where the variable value is computed.
      
      There's an extra complication in that memory operands can be unfolded from the
      CMOV and sunk into the new blocks -- the test checks both scenarios where the
      instruction number has to hop between instructions.
      
      This omission exposed by Dexter testing.
      
      Reviewed By: Orlando
      
      Differential Revision: https://reviews.llvm.org/D145565
      2325e011
    • Elliot Goodrich's avatar
      [llvm] Move AttributeMask to a separate header · f0fa2d7c
      Elliot Goodrich authored
      Move `AttributeMask` out of `llvm/IR/Attributes.h` to a new file
      `llvm/IR/AttributeMask.h`.  After doing this we can remove the
      `#include <bitset>` and `#include <set>` directives from `Attributes.h`.
      Since there are many headers including `Attributes.h`, but not needing
      the definition of `AttributeMask`, this causes unnecessary bloating of
      the translation units and slows down compilation.
      
      This commit adds in the include directive for `llvm/IR/AttributeMask.h`
      to the handful of source files that need to see the definition.
      
      This reduces the total number of preprocessing tokens across the LLVM
      source files in lib from (roughly) 1,917,509,187 to 1,902,982,273 - a
      reduction of ~0.76%. This should result in a small improvement in
      compilation time.
      
      Differential Revision: https://reviews.llvm.org/D153728
      f0fa2d7c