[all-commits] [llvm/llvm-project] 056cd1: [clang][bytecode] Don't check returned pointers fo...

Fangrui Song via All-commits all-commits at lists.llvm.org
Mon Dec 16 23:08:40 PST 2024


  Branch: refs/heads/users/MaskRay/spr/llvm-mc-dont-print-initial-text
  Home:   https://github.com/llvm/llvm-project
  Commit: 056cd12284f72105a3e2338f901882e43a90c8b2
      https://github.com/llvm/llvm-project/commit/056cd12284f72105a3e2338f901882e43a90c8b2
  Author: Timm Baeder <tbaeder at redhat.com>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M clang/lib/AST/ByteCode/Interp.h
    M clang/test/AST/ByteCode/functions.cpp

  Log Message:
  -----------
  [clang][bytecode] Don't check returned pointers for liveness (#120107)

We're supposed to let them through and then later diagnose reading from
them, but returning dead pointers is fine.


  Commit: e2cabd715bb6e8c81fe7437e74ccf78e4db5edf7
      https://github.com/llvm/llvm-project/commit/e2cabd715bb6e8c81fe7437e74ccf78e4db5edf7
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M llvm/lib/CodeGen/RegAllocGreedy.cpp

  Log Message:
  -----------
  RegAllocGreedy: Fix comment typo


  Commit: eb5c21108fca4c871987faef581158811954c916
      https://github.com/llvm/llvm-project/commit/eb5c21108fca4c871987faef581158811954c916
  Author: Sirraide <aeternalmail at gmail.com>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/lib/Sema/SemaExprCXX.cpp
    M clang/test/CodeGenCXX/matrix-type.cpp
    A clang/test/SemaCXX/matrix-types-pseudo-destructor.cpp

  Log Message:
  -----------
  [Clang] [Sema] Support matrix types in pseudo-destructor expressions (#117483)

We already support vector types, and since matrix element types have to
be scalar types, there should be no problem w/ just enabling this.

This now also allows matrix types to be stored in STL containers.


  Commit: 3c357a49d61e4c81a1ac016502ee504521bc8dda
      https://github.com/llvm/llvm-project/commit/3c357a49d61e4c81a1ac016502ee504521bc8dda
  Author: Alexander Yermolovich <43973793+ayermolo at users.noreply.github.com>
  Date:   2024-12-16 (Mon, 16 Dec 2024)

  Changed paths:
    M bolt/docs/CommandLineArgumentReference.md
    M bolt/include/bolt/Core/BinaryFunction.h
    M bolt/include/bolt/Passes/IdenticalCodeFolding.h
    M bolt/lib/Core/BinaryFunction.cpp
    M bolt/lib/Passes/IdenticalCodeFolding.cpp
    M bolt/lib/Rewrite/BinaryPassManager.cpp
    M bolt/lib/Rewrite/BoltDiff.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp
    A bolt/test/X86/icf-safe-icp.test
    A bolt/test/X86/icf-safe-process-rela-data.test
    A bolt/test/X86/icf-safe-test1-no-relocs.test
    A bolt/test/X86/icf-safe-test1.test
    A bolt/test/X86/icf-safe-test2GlobalConstPtrNoPic.test

  Log Message:
  -----------
  [BOLT] Add support for safe-icf (#116275)

Identical Code Folding (ICF) folds functions that are identical into one
function, and updates symbol addresses to the new address. This reduces
the size of a binary, but can lead to problems. For example when
function pointers are compared. This can be done either explicitly in
the code or generated IR by optimization passes like Indirect Call
Promotion (ICP). After ICF what used to be two different addresses
become the same address. This can lead to a different code path being
taken.

This is where safe ICF comes in. Linker (LLD) does it using address
significant section generated by clang. If symbol is in it, or an object
doesn't have this section symbols are not folded.

BOLT does not have the information regarding which objects do not have
this section, so can't re-use this mechanism.

This implementation scans code section and conservatively marks
functions symbols as unsafe. It treats symbols as unsafe if they are
used in non-control flow instruction. It also scans through the data
relocation sections and does the same for relocations that reference a
function symbol. The latter handles the case when function pointer is
stored in a local or global variable, etc. If a relocation address
points within a vtable these symbols are skipped.


  Commit: 5e727e8bed5c57cbc804a2453bba1c2379084f27
      https://github.com/llvm/llvm-project/commit/5e727e8bed5c57cbc804a2453bba1c2379084f27
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M llvm/lib/CodeGen/FixupStatepointCallerSaved.cpp
    M llvm/lib/CodeGen/StackMaps.cpp
    A llvm/test/CodeGen/X86/stackmap-undef-operand-anyregcc.mir
    M llvm/test/CodeGen/X86/statepoint-fixup-undef.mir

  Log Message:
  -----------
  [Statepoint] Treat undef operands less specially (#119682)

This reverts commit f7443905af1e06eaacda1e437fff8d54dc89c487.

This is to avoid an assertion if an undef operand appears in a
stackmap. This is important to avoid hitting verifier errors
when register allocation starts adding undefs in error scenarios.

Rather than trying to treat undef operands as special, leave them
alone and avoid producing an invalid spill. It would a bit more
precise to produce a spill of an undef register here, but that's not
exposed through the storeRegToStackSlot API.

https://reviews.llvm.org/D122605

This was an alternative to https://reviews.llvm.org/D122582


  Commit: 8387cbd0f9056fdf4e3886652e50fe4d94aaad7c
      https://github.com/llvm/llvm-project/commit/8387cbd0f9056fdf4e3886652e50fe4d94aaad7c
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2024-12-17 (Tue, 17 Dec 2024)

  Changed paths:
    M llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
    M llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
    M llvm/test/CodeGen/AMDGPU/sgpr-spill-partially-undef.mir
    M llvm/test/CodeGen/AMDGPU/spill-agpr-partially-undef.mir
    M llvm/test/CodeGen/AMDGPU/vgpr-spill.mir

  Log Message:
  -----------
  AMDGPU: Delete spills of undef values (#119684)

AMDGPU: Delete spills of undef values

It would be a bit more logical to preserve the undef and do the normal
expansion, but this is less work. This avoids verifier errors in a
future patch which starts deleting liveness from registers after
allocation failures which results in spills of undef values.

https://reviews.llvm.org/D122607

Move where undef sgpr spills are deleted


  Commit: e83afbe793071727533d822bcc29f547dfab2905
      https://github.com/llvm/llvm-project/commit/e83afbe793071727533d822bcc29f547dfab2905
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-12-16 (Mon, 16 Dec 2024)

  Changed paths:
    M lld/ELF/LinkerScript.cpp
    M lld/ELF/LinkerScript.h

  Log Message:
  -----------
  [ELF] Remove unneeded sec->file check


  Commit: fa4fe4a44e7ab1d740c149d77e395c2bb25e0d56
      https://github.com/llvm/llvm-project/commit/fa4fe4a44e7ab1d740c149d77e395c2bb25e0d56
  Author: Fangrui Song <i at maskray.me>
  Date:   2024-12-16 (Mon, 16 Dec 2024)

  Changed paths:
    M bolt/docs/CommandLineArgumentReference.md
    M bolt/include/bolt/Core/BinaryFunction.h
    M bolt/include/bolt/Passes/IdenticalCodeFolding.h
    M bolt/lib/Core/BinaryFunction.cpp
    M bolt/lib/Passes/IdenticalCodeFolding.cpp
    M bolt/lib/Rewrite/BinaryPassManager.cpp
    M bolt/lib/Rewrite/BoltDiff.cpp
    M bolt/lib/Rewrite/RewriteInstance.cpp
    A bolt/test/X86/icf-safe-icp.test
    A bolt/test/X86/icf-safe-process-rela-data.test
    A bolt/test/X86/icf-safe-test1-no-relocs.test
    A bolt/test/X86/icf-safe-test1.test
    A bolt/test/X86/icf-safe-test2GlobalConstPtrNoPic.test
    M clang/docs/ReleaseNotes.rst
    M clang/lib/AST/ByteCode/Interp.h
    M clang/lib/Sema/SemaExprCXX.cpp
    M clang/test/AST/ByteCode/functions.cpp
    M clang/test/CodeGenCXX/matrix-type.cpp
    A clang/test/SemaCXX/matrix-types-pseudo-destructor.cpp
    M lld/ELF/LinkerScript.cpp
    M lld/ELF/LinkerScript.h
    M llvm/lib/CodeGen/FixupStatepointCallerSaved.cpp
    M llvm/lib/CodeGen/RegAllocGreedy.cpp
    M llvm/lib/CodeGen/StackMaps.cpp
    M llvm/lib/MC/MCAsmStreamer.cpp
    M llvm/lib/Target/AMDGPU/SILowerSGPRSpills.cpp
    M llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
    M llvm/test/CodeGen/AMDGPU/sgpr-spill-partially-undef.mir
    M llvm/test/CodeGen/AMDGPU/spill-agpr-partially-undef.mir
    M llvm/test/CodeGen/AMDGPU/vgpr-spill.mir
    A llvm/test/CodeGen/X86/stackmap-undef-operand-anyregcc.mir
    M llvm/test/CodeGen/X86/statepoint-fixup-undef.mir
    M llvm/tools/llvm-mc/Disassembler.cpp

  Log Message:
  -----------
  work around xcoff instead

Created using spr 1.3.5-bogner


Compare: https://github.com/llvm/llvm-project/compare/de901197ddd7...fa4fe4a44e7a

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list