[all-commits] [llvm/llvm-project] 1ddf18: [flang] introduce fir.copy to avoid load store of ...

jeanPerier via All-commits all-commits at lists.llvm.org
Tue Mar 11 01:31:24 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 1ddf18057a5aa1ee7010ec262ccfc80c39b99bf6
      https://github.com/llvm/llvm-project/commit/1ddf18057a5aa1ee7010ec262ccfc80c39b99bf6
  Author: jeanPerier <jperier at nvidia.com>
  Date:   2025-03-11 (Tue, 11 Mar 2025)

  Changed paths:
    M flang/include/flang/Optimizer/Dialect/FIROps.td
    M flang/include/flang/Optimizer/Dialect/FIRType.h
    M flang/lib/Optimizer/CodeGen/CodeGen.cpp
    M flang/lib/Optimizer/Dialect/FIROps.cpp
    A flang/test/Fir/copy-codegen.fir
    M flang/test/Fir/fir-ops.fir
    M flang/test/Fir/invalid.fir

  Log Message:
  -----------
  [flang] introduce fir.copy to avoid load store of aggregates (#130289)

Introduce a FIR operation to do memcopy/memmove of compile time constant size types.

This is to avoid requiring derived type copies to done with load/store
which is badly supported in LLVM when the aggregate type is "big" (no
threshold can easily be defined here, better to always avoid them for
fir.type).

This was the root cause of the regressions caused by #114002 which introduced a
load/store of fir.type<> which caused hand/asserts to fire in LLVM on
several benchmarks.

See https://llvm.org/docs/Frontend/PerformanceTips.html#avoid-creating-values-of-aggregate-type



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