Skip to content

Commit 76c6aa0

Browse files
authored
Merge pull request #1070 from schweitzpgi/ch-uniqname
Changes so that temporaries do not use uniq_name.
2 parents 40d96d4 + 6286954 commit 76c6aa0

33 files changed

+249
-175
lines changed

flang/lib/Optimizer/Builder/Character.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ fir::factory::CharacterExprHelper::createCharacterTemp(mlir::Type type,
395395
llvm::SmallVector<mlir::Value> lenParams;
396396
if (typeLen == fir::CharacterType::unknownLen())
397397
lenParams.push_back(len);
398-
auto ref = builder.allocateLocal(loc, charTy, ".chrtmp", "",
398+
auto ref = builder.allocateLocal(loc, charTy, "", ".chrtmp",
399399
/*shape=*/llvm::None, lenParams);
400400
return {ref, len};
401401
}

flang/lib/Optimizer/Builder/FIRBuilder.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ mlir::Block *fir::FirOpBuilder::getAllocaBlock() {
190190
}
191191

192192
/// Create a temporary variable on the stack. Anonymous temporaries have no
193-
/// `name` value.
193+
/// `name` value. Temporaries do not require a uniqued name.
194194
mlir::Value
195195
fir::FirOpBuilder::createTemporary(mlir::Location loc, mlir::Type type,
196196
llvm::StringRef name, mlir::ValueRange shape,
@@ -208,8 +208,8 @@ fir::FirOpBuilder::createTemporary(mlir::Location loc, mlir::Type type,
208208
}
209209

210210
assert(!type.isa<fir::ReferenceType>() && "cannot be a reference");
211-
auto ae = create<fir::AllocaOp>(loc, type, name, dynamicLength, dynamicShape,
212-
attrs);
211+
auto ae = create<fir::AllocaOp>(loc, type, /*unique_name=*/llvm::StringRef{},
212+
name, dynamicLength, dynamicShape, attrs);
213213
if (hoistAlloc)
214214
restoreInsertionPoint(insPt);
215215
return ae;

flang/lib/Optimizer/Dialect/FIROps.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,10 @@ void fir::AllocaOp::build(mlir::OpBuilder &builder,
184184
llvm::StringRef uniq_name, llvm::StringRef bindc_name,
185185
mlir::ValueRange typeparams, mlir::ValueRange shape,
186186
llvm::ArrayRef<mlir::NamedAttribute> attributes) {
187-
auto nameAttr = builder.getStringAttr(uniq_name);
188-
auto bindcAttr = builder.getStringAttr(bindc_name);
187+
auto nameAttr =
188+
uniq_name.empty() ? mlir::StringAttr{} : builder.getStringAttr(uniq_name);
189+
auto bindcAttr = bindc_name.empty() ? mlir::StringAttr{}
190+
: builder.getStringAttr(bindc_name);
189191
build(builder, result, wrapAllocaResultType(in_type), in_type, nameAttr,
190192
bindcAttr, typeparams, shape);
191193
result.addAttributes(attributes);

flang/test/Lower/OpenMP/omp-seqloop.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ program wsloop
99

1010
!FIRDialect: omp.parallel {
1111
!$OMP PARALLEL
12-
!FIRDialect: %[[PRIVATE_INDX:.*]] = fir.alloca i32 {{{.*}}uniq_name = "i"}
12+
!FIRDialect: %[[PRIVATE_INDX:.*]] = fir.alloca i32 {{{.*}}bindc_name = "i"}
1313
!FIRDialect: %[[FINAL_INDX:.*]] = fir.do_loop %[[INDX:.*]] = {{.*}} {
1414
do i=1, 9
1515
print*, i
@@ -28,7 +28,7 @@ subroutine sub1
2828
integer :: i
2929
integer :: arr(10)
3030
!FIRDialect: omp.parallel {
31-
!FIRDialect: {{.*}} = fir.alloca i32 {uniq_name = "i"}
31+
!FIRDialect: {{.*}} = fir.alloca i32 {bindc_name = "i"}
3232
!$OMP PARALLEL
3333
do i=1, 10
3434
arr(i) = i
@@ -44,7 +44,7 @@ subroutine sub2
4444
integer :: i
4545
integer :: arr(10)
4646
!FIRDialect: omp.parallel {
47-
!FIRDialect: {{.*}} = fir.alloca i32 {uniq_name = "i"}
47+
!FIRDialect: {{.*}} = fir.alloca i32 {bindc_name = "i"}
4848
!$OMP PARALLEL
4949
!FIRDialect: omp.master {
5050
!$OMP MASTER
@@ -67,15 +67,15 @@ subroutine sub3
6767
integer :: i,j
6868
integer :: arr(10)
6969
!FIRDialect: omp.parallel {
70-
!FIRDialect: {{.*}} = fir.alloca i32 {uniq_name = "i"}
70+
!FIRDialect: {{.*}} = fir.alloca i32 {bindc_name = "i"}
7171
!$OMP PARALLEL
7272
do i=1, 10
7373
arr(i) = i
7474
end do
7575
!FIRDialect: omp.master {
7676
!$OMP MASTER
7777
!FIRDialect: omp.parallel {
78-
!FIRDialect: {{.*}} = fir.alloca i32 {uniq_name = "j"}
78+
!FIRDialect: {{.*}} = fir.alloca i32 {bindc_name = "j"}
7979
!$OMP PARALLEL
8080
do j=1, 10
8181
arr(j) = j

flang/test/Lower/alternate-return.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function k(n1, n2)
3939

4040
! CHECK-LABEL: func @_QPs
4141
subroutine s(n1, *, n2, *)
42-
! CHECK: [[retval:%[0-9]+]] = fir.alloca index {{{.*}}uniq_name = "s"}
42+
! CHECK: [[retval:%[0-9]+]] = fir.alloca index {{{.*}}bindc_name = "s"}
4343
! CHECK-COUNT-3: fir.store {{.*}} to [[retval]] : !fir.ref<index>
4444
if (n1 < n2) return 1
4545
if (n1 > n2) return 2

flang/test/Lower/array-constructor-2.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ subroutine test4(a, b, n1, m1)
104104
integer, external :: f1, f2, f3
105105

106106
! Dynamic array ctor with dynamic extent using implied do loops.
107-
! CHECK-DAG: fir.alloca index {uniq_name = ".buff.pos"}
108-
! CHECK-DAG: fir.alloca index {uniq_name = ".buff.size"}
107+
! CHECK-DAG: fir.alloca index {bindc_name = ".buff.pos"}
108+
! CHECK-DAG: fir.alloca index {bindc_name = ".buff.size"}
109109
! CHECK-DAG: %[[c32:.*]] = constant 32 : index
110110
! CHECK: fir.allocmem f32, %[[c32]]
111111
! CHECK: fir.call @_QPf1(%{{.*}}) : (!fir.ref<i32>) -> i32

flang/test/Lower/array-derived-assignments.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ subroutine test_deep_copy(t1, t2)
4949
! CHECK-DAG: %[[VAL_15:.*]] = constant 10 : index
5050
! CHECK-DAG: %[[VAL_16:.*]] = constant 0 : index
5151
! CHECK-DAG: %[[VAL_17:.*]] = constant 1 : index
52-
! CHECK: %[[VAL_18:.*]] = fir.alloca !fir.box<!fir.type<_QMarray_derived_assignTdeep_copy{{.*}}>> {uniq_name = ""}
52+
! CHECK: %[[VAL_18:.*]] = fir.alloca !fir.box<!fir.type<_QMarray_derived_assignTdeep_copy{{.*}}>>
5353
! CHECK: %[[VAL_19:.*]] = fir.shape %[[VAL_15]] : (index) -> !fir.shape<1>
5454
! CHECK: br ^bb1(%[[VAL_16]], %[[VAL_15]] : index, index)
5555
! CHECK: ^bb1(%[[VAL_20:.*]]: index, %[[VAL_21:.*]]: index):

flang/test/Lower/array-elemental-calls-char-byval.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ subroutine foo1(i, j, c)
3434
! CHECK: ^bb2:
3535
! CHECK: %[[VAL_11:.*]] = addi %[[VAL_8]], %[[VAL_3]] : index
3636
! CHECK: %[[VAL_12:.*]] = fir.array_coor %[[VAL_6]](%[[VAL_7]]) %[[VAL_11]] typeparams %[[VAL_4]]#1 : (!fir.ref<!fir.array<10x!fir.char<1,?>>>, !fir.shape<1>, index, index) -> !fir.ref<!fir.char<1,?>>
37-
! CHECK: %[[VAL_13:.*]] = fir.alloca !fir.char<1,?>(%[[VAL_4]]#1 : index) {uniq_name = ".chrtmp"}
37+
! CHECK: %[[VAL_13:.*]] = fir.alloca !fir.char<1,?>(%[[VAL_4]]#1 : index) {bindc_name = ".chrtmp"}
3838
! CHECK: %[[VAL_14:.*]] = fir.convert %[[VAL_4]]#1 : (index) -> i64
3939
! CHECK: %[[VAL_15:.*]] = fir.convert %[[VAL_13]] : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
4040
! CHECK: %[[VAL_16:.*]] = fir.convert %[[VAL_12]] : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
@@ -64,7 +64,7 @@ subroutine foo2(i, j, c)
6464
! CHECK-DAG: %[[VAL_27:.*]] = constant 1 : index
6565
! CHECK: %[[VAL_28:.*]]:2 = fir.unboxchar %[[VAL_29]] : (!fir.boxchar<1>) -> (!fir.ref<!fir.char<1,?>>, index)
6666
! CHECK: %[[VAL_30:.*]] = fir.shape %[[VAL_25]] : (index) -> !fir.shape<1>
67-
! CHECK: %[[VAL_31:.*]] = fir.alloca !fir.char<1,?>(%[[VAL_28]]#1 : index) {uniq_name = ".chrtmp"}
67+
! CHECK: %[[VAL_31:.*]] = fir.alloca !fir.char<1,?>(%[[VAL_28]]#1 : index) {bindc_name = ".chrtmp"}
6868
! CHECK: %[[VAL_32:.*]] = fir.convert %[[VAL_28]]#1 : (index) -> i64
6969
! CHECK: %[[VAL_33:.*]] = fir.convert %[[VAL_31]] : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
7070
! CHECK: %[[VAL_34:.*]] = fir.convert %[[VAL_28]]#0 : (!fir.ref<!fir.char<1,?>>) -> !fir.ref<i8>
@@ -107,7 +107,7 @@ subroutine foo3(i, j)
107107
! CHECK: %[[VAL_57:.*]] = fir.convert %[[VAL_56]] : (i32) -> i8
108108
! CHECK: %[[VAL_58:.*]] = fir.undefined !fir.char<1>
109109
! CHECK: %[[VAL_59:.*]] = fir.insert_value %[[VAL_58]], %[[VAL_57]], [0 : index] : (!fir.char<1>, i8) -> !fir.char<1>
110-
! CHECK: %[[VAL_60:.*]] = fir.alloca !fir.char<1> {uniq_name = ".chrtmp"}
110+
! CHECK: %[[VAL_60:.*]] = fir.alloca !fir.char<1> {bindc_name = ".chrtmp"}
111111
! CHECK: fir.store %[[VAL_59]] to %[[VAL_60]] : !fir.ref<!fir.char<1>>
112112
! CHECK: %[[VAL_61:.*]] = fir.convert %[[VAL_60]] : (!fir.ref<!fir.char<1>>) -> !fir.ref<!fir.char<1,?>>
113113
! CHECK: %[[VAL_62:.*]] = fir.emboxchar %[[VAL_61]], %[[VAL_48]] : (!fir.ref<!fir.char<1,?>>, index) -> !fir.boxchar<1>
@@ -139,7 +139,7 @@ subroutine foo4(i, j)
139139
! CHECK: %[[VAL_78:.*]] = fir.insert_value %[[VAL_77]], %[[VAL_76]], [0 : index] : (!fir.char<1>, i8) -> !fir.char<1>
140140
! CHECK: %[[VAL_79:.*]] = fir.alloca !fir.char<1>
141141
! CHECK: fir.store %[[VAL_78]] to %[[VAL_79]] : !fir.ref<!fir.char<1>>
142-
! CHECK: %[[VAL_80:.*]] = fir.alloca !fir.char<1> {uniq_name = ".chrtmp"}
142+
! CHECK: %[[VAL_80:.*]] = fir.alloca !fir.char<1> {bindc_name = ".chrtmp"}
143143
! CHECK: %[[VAL_81:.*]] = fir.convert %[[VAL_71]] : (index) -> i64
144144
! CHECK: %[[VAL_82:.*]] = fir.convert %[[VAL_80]] : (!fir.ref<!fir.char<1>>) -> !fir.ref<i8>
145145
! CHECK: %[[VAL_83:.*]] = fir.convert %[[VAL_79]] : (!fir.ref<!fir.char<1>>) -> !fir.ref<i8>
@@ -178,7 +178,7 @@ subroutine foo5(i, j)
178178
! CHECK-DAG: %[[VAL_99:.*]] = constant 1 : index
179179
! CHECK: %[[VAL_100:.*]] = fir.shape %[[VAL_97]] : (index) -> !fir.shape<1>
180180
! CHECK: %[[VAL_101:.*]] = fir.address_of(@{{.*}}) : !fir.ref<!fir.char<1,5>>
181-
! CHECK: %[[VAL_102:.*]] = fir.alloca !fir.char<1,5> {uniq_name = ".chrtmp"}
181+
! CHECK: %[[VAL_102:.*]] = fir.alloca !fir.char<1,5> {bindc_name = ".chrtmp"}
182182
! CHECK: %[[VAL_103:.*]] = fir.convert %[[VAL_95]] : (index) -> i64
183183
! CHECK: %[[VAL_104:.*]] = fir.convert %[[VAL_102]] : (!fir.ref<!fir.char<1,5>>) -> !fir.ref<i8>
184184
! CHECK: %[[VAL_105:.*]] = fir.convert %[[VAL_101]] : (!fir.ref<!fir.char<1,5>>) -> !fir.ref<i8>

flang/test/Lower/array-elemental-calls-char.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ subroutine foo3(i, j)
147147
! CHECK-DAG: %[[VAL_69:.*]] = constant 10 : index
148148
! CHECK-DAG: %[[VAL_70:.*]] = constant 0 : index
149149
! CHECK-DAG: %[[VAL_71:.*]] = constant 1 : index
150-
! CHECK-DAG: %[[VAL_72:.*]] = fir.alloca !fir.char<1> {uniq_name = ""}
150+
! CHECK-DAG: %[[VAL_72:.*]] = fir.alloca !fir.char<1>
151151
! CHECK: %[[VAL_73:.*]] = fir.shape %[[VAL_69]] : (index) -> !fir.shape<1>
152152
! CHECK: br ^bb1(%[[VAL_70]], %[[VAL_69]] : index, index)
153153
! CHECK: ^bb1(%[[VAL_74:.*]]: index, %[[VAL_75:.*]]: index):
@@ -232,7 +232,7 @@ subroutine foo6(c)
232232
! CHECK: %[[VAL_55:.*]] = addi %[[VAL_52]], %[[VAL_47]] : index
233233
! CHECK: %[[VAL_56:.*]] = fir.array_coor %[[VAL_50]](%[[VAL_51]]) %[[VAL_55]] typeparams %[[VAL_48]]#1 : (!fir.ref<!fir.array<10x!fir.char<1,?>>>, !fir.shape<1>, index, index) -> !fir.ref<!fir.char<1,?>>
234234
! CHECK: %[[VAL_57:.*]] = fir.emboxchar %[[VAL_56]], %[[VAL_48]]#1 : (!fir.ref<!fir.char<1,?>>, index) -> !fir.boxchar<1>
235-
! CHECK: %[[VAL_58:.*]] = fir.alloca !fir.char<1,?>(%[[VAL_48]]#1 : index) {uniq_name = ".result"}
235+
! CHECK: %[[VAL_58:.*]] = fir.alloca !fir.char<1,?>(%[[VAL_48]]#1 : index) {bindc_name = ".result"}
236236
! CHECK: %[[VAL_59:.*]] = fir.call @_QMchar_elemPelem_return_char(%[[VAL_58]], %[[VAL_48]]#1, %[[VAL_57]]) : (!fir.ref<!fir.char<1,?>>, index, !fir.boxchar<1>) -> !fir.boxchar<1>
237237
! CHECK: br ^bb3(%[[VAL_46]], %[[VAL_48]]#1 : index, index)
238238
! CHECK: ^bb3(%[[VAL_60:.*]]: index, %[[VAL_61:.*]]: index):

flang/test/Lower/array-elemental-calls.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ subroutine test_elem_by_ref(i, j)
3636
! CHECK-SAME: %[[arg1:.*]]: !fir.ref<!fir.array<100xi32>>
3737
subroutine test_elem_by_valueref(i, j)
3838
integer :: i(100), j(100)
39-
! CHECK-DAG: %[[tmpA:.*]] = fir.alloca i32 {adapt.valuebyref, uniq_name = {{.*}}}
40-
! CHECK-DAG: %[[tmpB:.*]] = fir.alloca f32 {adapt.valuebyref, uniq_name = {{.*}}}
39+
! CHECK-DAG: %[[tmpA:.*]] = fir.alloca i32 {adapt.valuebyref}
40+
! CHECK-DAG: %[[tmpB:.*]] = fir.alloca f32 {adapt.valuebyref}
4141
! CHECK: %[[jload:.*]] = fir.array_load %[[arg1]]
4242
! CHECK: %[[cst:.*]] = constant 4.200000e+01 : f32
4343
! CHECK: fir.store %[[cst]] to %[[tmpB]] : !fir.ref<f32>

0 commit comments

Comments
 (0)