Skip to content

Commit 7e78754

Browse files
committed
Use name of an equivalence member in local aggregate alloca
The member symbol that gives its name to the equivalence storage is the first in lexicographical order (just like for global aggregate).
1 parent bf8ebcd commit 7e78754

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

flang/lib/Lower/ConvertVariable.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,9 +661,9 @@ instantiateAggregateStore(Fortran::lower::AbstractConverter &converter,
661661
auto &builder = converter.getFirOpBuilder();
662662
auto i8Ty = builder.getIntegerType(8);
663663
auto loc = converter.getCurrentLocation();
664+
auto aggName = mangleGlobalAggregateStore(var.getAggregateStore());
664665
if (var.isGlobal()) {
665666
// The scope of this aggregate is this procedure.
666-
auto aggName = mangleGlobalAggregateStore(var.getAggregateStore());
667667
fir::GlobalOp global = builder.getNamedGlobal(aggName);
668668
if (!global) {
669669
auto &aggregate = var.getAggregateStore();
@@ -696,7 +696,7 @@ instantiateAggregateStore(Fortran::lower::AbstractConverter &converter,
696696
fir::SequenceType::Shape shape(1, size);
697697
auto seqTy = fir::SequenceType::get(shape, i8Ty);
698698
auto local =
699-
builder.allocateLocal(loc, seqTy, ".aggtmp", "", llvm::None, llvm::None,
699+
builder.allocateLocal(loc, seqTy, aggName, "", llvm::None, llvm::None,
700700
/*target=*/false);
701701
insertAggregateStore(storeMap, var, local);
702702
}

flang/test/Lower/equivalence-1.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
SUBROUTINE s1
55
INTEGER i
66
REAL r
7-
! CHECK: = fir.alloca !fir.array<4xi8>
7+
! CHECK: = fir.alloca !fir.array<4xi8> {uniq_name = "_QFs1Ei"}
88
EQUIVALENCE (r,i)
99
! CHECK: %[[coor:.*]] = fir.coordinate_of %{{.*}}, %{{.*}} : (!fir.ref<!fir.array<4xi8>>, index) -> !fir.ref<i8>
1010
! CHECK: %[[iloc:.*]] = fir.convert %[[coor]] : (!fir.ref<i8>) -> !fir.ref<i32>

0 commit comments

Comments
 (0)