[all-commits] [llvm/llvm-project] 403d0b: [flang] Skip creating AggregateStores for common b...

jpenix-quic via All-commits all-commits at lists.llvm.org
Mon Oct 3 12:21:14 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 403d0b7a4e13e8e3bcaa1a0c57ab66ffe761c7af
      https://github.com/llvm/llvm-project/commit/403d0b7a4e13e8e3bcaa1a0c57ab66ffe761c7af
  Author: Jonathon Penix <jpenix at quicinc.com>
  Date:   2022-10-03 (Mon, 03 Oct 2022)

  Changed paths:
    M flang/lib/Lower/PFTBuilder.cpp
    M flang/test/Lower/equivalence-2.f90

  Log Message:
  -----------
  [flang] Skip creating AggregateStores for common block associated aggregates

Previously, AggregateStores were created for aggregates associated with common
blocks. As a) AggregateStoreMap uses scope and offset information to search for
aggregate stores and b) variables related to common blocks have their
offsets set relative to the common block itself, if there were multiple
equivalences and at least one involved variables defined in a common block there
was an opportunity for the scope/offset pairs to match between distinct
aggregate stores. As a result, entries in AggregateStoreMap could collide,
resulting in incorrect stores being returned for a particular variable.

To prevent these collisions, skip creating AggregateStores for aggregates which
are associated with common blocks. This information was already unused as
aggregates associated with common blocks are handled by instantiateCommon.

Fixes https://github.com/llvm/llvm-project/issues/57749

Differential Revision: https://reviews.llvm.org/D134828




More information about the All-commits mailing list