[all-commits] [llvm/llvm-project] 61f834: GlobalISel: Insert memcpy for outgoing byval argum...

Matt Arsenault via All-commits all-commits at lists.llvm.org
Thu Mar 18 06:17:17 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 61f834cc0937c4532e5679f95b2a44d529a4d8bf
      https://github.com/llvm/llvm-project/commit/61f834cc0937c4532e5679f95b2a44d529a4d8bf
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2021-03-18 (Thu, 18 Mar 2021)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
    M llvm/include/llvm/CodeGen/GlobalISel/MachineIRBuilder.h
    M llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
    A llvm/test/CodeGen/AArch64/GlobalISel/byval-call.ll
    M llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-call.ll

  Log Message:
  -----------
  GlobalISel: Insert memcpy for outgoing byval arguments

byval requires an implicit copy between the caller and callee such
that the callee may write into the stack area without it modifying the
value in the parent. Previously, this was passing through the raw
pointer value which would break if the callee wrote into it.

Most of the time, this copy can be optimized out (however we don't
have the optimization SelectionDAG does yet).

This will trigger more fallbacks for AMDGPU now, since we don't have
legalization for memcpy yet (although we should stop using byval
anyway).


  Commit: b9a03849836f6409291025a31089bfabfa96dd0b
      https://github.com/llvm/llvm-project/commit/b9a03849836f6409291025a31089bfabfa96dd0b
  Author: Matt Arsenault <Matthew.Arsenault at amd.com>
  Date:   2021-03-18 (Thu, 18 Mar 2021)

  Changed paths:
    M llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h
    M llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
    M llvm/lib/CodeGen/GlobalISel/Utils.cpp
    M llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
    M llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp
    M llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-call.ll

  Log Message:
  -----------
  GlobalISel: Preserve source value information for outgoing byval args

Pass through the original argument IR value in order to preserve the
aliasing information in the memcpy memory operands.


Compare: https://github.com/llvm/llvm-project/compare/b3ced9852c7e...b9a03849836f


More information about the All-commits mailing list