Skip to content

Commit 050f785

Browse files
committed
Revert "[flang][runtime] Fix odd "invalid descriptor" runtime crash (#107785)"
This reverts commit 15106c2. Commit does not pass check-flang on x86 host.
1 parent 65e0574 commit 050f785

File tree

12 files changed

+40
-126
lines changed

12 files changed

+40
-126
lines changed

flang/lib/Semantics/expression.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4610,8 +4610,7 @@ std::optional<ProcedureRef> ArgumentAnalyzer::GetDefinedAssignmentProc() {
46104610
}
46114611
for (std::size_t i{0}; !proc && i < actuals_.size(); ++i) {
46124612
const Symbol *generic{nullptr};
4613-
if (const Symbol *
4614-
binding{FindBoundOp(oprName, i, generic, /*isSubroutine=*/true)}) {
4613+
if (const Symbol *binding{FindBoundOp(oprName, i, generic, true)}) {
46154614
if (CheckAccessibleSymbol(scope, DEREF(generic))) {
46164615
// ignore inaccessible type-bound ASSIGNMENT(=) generic
46174616
} else if (const Symbol *

flang/lib/Semantics/runtime-type-info.cpp

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,6 @@ class RuntimeTableBuilder {
149149
SomeExpr explicitEnum_; // Value::Genre::Explicit
150150
SomeExpr lenParameterEnum_; // Value::Genre::LenParameter
151151
SomeExpr scalarAssignmentEnum_; // SpecialBinding::Which::ScalarAssignment
152-
SomeExpr
153-
scalarAllocatableAssignmentEnum_; // SpecialBinding::Which::ScalarAllocatableAssignment
154-
SomeExpr
155-
scalarPointerAssignmentEnum_; // SpecialBinding::Which::ScalarPointerAssignment
156152
SomeExpr
157153
elementalAssignmentEnum_; // SpecialBinding::Which::ElementalAssignment
158154
SomeExpr readFormattedEnum_; // SpecialBinding::Which::ReadFormatted
@@ -178,9 +174,6 @@ RuntimeTableBuilder::RuntimeTableBuilder(
178174
explicitEnum_{GetEnumValue("explicit")},
179175
lenParameterEnum_{GetEnumValue("lenparameter")},
180176
scalarAssignmentEnum_{GetEnumValue("scalarassignment")},
181-
scalarAllocatableAssignmentEnum_{
182-
GetEnumValue("scalarallocatableassignment")},
183-
scalarPointerAssignmentEnum_{GetEnumValue("scalarpointerassignment")},
184177
elementalAssignmentEnum_{GetEnumValue("elementalassignment")},
185178
readFormattedEnum_{GetEnumValue("readformatted")},
186179
readUnformattedEnum_{GetEnumValue("readunformatted")},
@@ -1129,10 +1122,10 @@ void RuntimeTableBuilder::DescribeSpecialProc(
11291122
// Non-type-bound generic INTERFACEs and assignments from distinct
11301123
// types must not be used for component intrinsic assignment.
11311124
CHECK(proc->dummyArguments.size() == 2);
1132-
const auto &ddo1{
1125+
const auto t1{
11331126
DEREF(std::get_if<evaluate::characteristics::DummyDataObject>(
1134-
&proc->dummyArguments[0].u))};
1135-
const auto t1{ddo1.type.type()};
1127+
&proc->dummyArguments[0].u))
1128+
.type.type()};
11361129
const auto t2{
11371130
DEREF(std::get_if<evaluate::characteristics::DummyDataObject>(
11381131
&proc->dummyArguments[1].u))
@@ -1144,13 +1137,7 @@ void RuntimeTableBuilder::DescribeSpecialProc(
11441137
return;
11451138
}
11461139
which = proc->IsElemental() ? elementalAssignmentEnum_
1147-
: ddo1.attrs.test(
1148-
evaluate::characteristics::DummyDataObject::Attr::Allocatable)
1149-
? scalarAllocatableAssignmentEnum_
1150-
: ddo1.attrs.test(
1151-
evaluate::characteristics::DummyDataObject::Attr::Pointer)
1152-
? scalarPointerAssignmentEnum_
1153-
: scalarAssignmentEnum_;
1140+
: scalarAssignmentEnum_;
11541141
if (binding && binding->passName() &&
11551142
*binding->passName() == proc->dummyArguments[1].name) {
11561143
argThatMightBeDescriptor = 1;

flang/module/__fortran_type_info.f90

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,11 @@
106106
end type
107107

108108
enum, bind(c) ! SpecialBinding::Which
109-
enumerator :: ScalarAssignment = 1
110-
enumerator :: ScalarAllocatableAssignment = 2
111-
enumerator :: ScalarPointerAssignment = 3
112-
enumerator :: ElementalAssignment = 4
113-
enumerator :: ReadFormatted = 5, ReadUnformatted = 6
114-
enumerator :: WriteFormatted = 7, WriteUnformatted = 8
115-
enumerator :: ElementalFinal = 9, AssumedRankFinal = 10
116-
enumerator :: ScalarFinal = 11 ! higher-rank final procedures follow
109+
enumerator :: ScalarAssignment = 1, ElementalAssignment = 2
110+
enumerator :: ReadFormatted = 3, ReadUnformatted = 4
111+
enumerator :: WriteFormatted = 5, WriteUnformatted = 6
112+
enumerator :: ElementalFinal = 7, AssumedRankFinal = 8
113+
enumerator :: ScalarFinal = 9 ! higher-rank final procedures follow
117114
end enum
118115

119116
type, bind(c) :: SpecialBinding

flang/runtime/assign.cpp

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -352,17 +352,6 @@ RT_API_ATTRS static void Assign(
352352
// the Assign() is invoked recursively for component-per-component
353353
// assignments.
354354
if (to.rank() == 0) {
355-
if (to.IsAllocatable()) {
356-
if (const auto *special{toDerived->FindSpecialBinding(typeInfo::
357-
SpecialBinding::Which::ScalarAllocatableAssignment)}) {
358-
return DoScalarDefinedAssignment(to, from, *special);
359-
}
360-
} else if (to.IsPointer()) {
361-
if (const auto *special{toDerived->FindSpecialBinding(
362-
typeInfo::SpecialBinding::Which::ScalarPointerAssignment)}) {
363-
return DoScalarDefinedAssignment(to, from, *special);
364-
}
365-
}
366355
if (const auto *special{toDerived->FindSpecialBinding(
367356
typeInfo::SpecialBinding::Which::ScalarAssignment)}) {
368357
return DoScalarDefinedAssignment(to, from, *special);
@@ -428,8 +417,9 @@ RT_API_ATTRS static void Assign(
428417
StaticDescriptor<maxRank, true, 10 /*?*/> statDesc[2];
429418
Descriptor &toCompDesc{statDesc[0].descriptor()};
430419
Descriptor &fromCompDesc{statDesc[1].descriptor()};
431-
comp.CreateTargetDescriptor(toCompDesc, to, terminator, toAt);
432-
comp.CreateTargetDescriptor(fromCompDesc, from, terminator, fromAt);
420+
comp.CreatePointerDescriptor(toCompDesc, to, terminator, toAt);
421+
comp.CreatePointerDescriptor(
422+
fromCompDesc, from, terminator, fromAt);
433423
Assign(toCompDesc, fromCompDesc, terminator, nestedFlags);
434424
} else { // Component has intrinsic type; simply copy raw bytes
435425
std::size_t componentByteSize{comp.SizeInBytes(to)};

flang/runtime/descriptor-io.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ static RT_API_ATTRS bool DefaultComponentIO(IoStatementState &io,
255255
// Create a descriptor for the component
256256
StaticDescriptor<maxRank, true, 16 /*?*/> statDesc;
257257
Descriptor &desc{statDesc.descriptor()};
258-
component.CreateTargetDescriptor(
258+
component.CreatePointerDescriptor(
259259
desc, origDescriptor, terminator, origSubscripts);
260260
return DescriptorIO<DIR>(io, desc, table);
261261
} else {

flang/runtime/namelist.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,15 +362,15 @@ static RT_API_ATTRS bool HandleComponent(IoStatementState &io, Descriptor &desc,
362362
io.HandleRelativePosition(byteCount); // skip over '('
363363
StaticDescriptor<maxRank, true, 16> staticDesc;
364364
Descriptor &tmpDesc{staticDesc.descriptor()};
365-
comp->CreateTargetDescriptor(tmpDesc, source, handler);
365+
comp->CreatePointerDescriptor(tmpDesc, source, handler);
366366
if (!HandleSubscripts(io, desc, tmpDesc, compName)) {
367367
return false;
368368
}
369369
createdDesc = true;
370370
}
371371
}
372372
if (!createdDesc) {
373-
comp->CreateTargetDescriptor(desc, source, handler);
373+
comp->CreatePointerDescriptor(desc, source, handler);
374374
}
375375
if (source.rank() > 0) {
376376
if (desc.rank() > 0) {

flang/runtime/type-info.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ RT_API_ATTRS void Component::EstablishDescriptor(Descriptor &descriptor,
134134
}
135135
}
136136

137-
RT_API_ATTRS void Component::CreateTargetDescriptor(Descriptor &descriptor,
137+
RT_API_ATTRS void Component::CreatePointerDescriptor(Descriptor &descriptor,
138138
const Descriptor &container, Terminator &terminator,
139139
const SubscriptValue *subscripts) const {
140140
RUNTIME_CHECK(terminator, genre_ == Genre::Data);
@@ -144,6 +144,7 @@ RT_API_ATTRS void Component::CreateTargetDescriptor(Descriptor &descriptor,
144144
} else {
145145
descriptor.set_base_addr(container.OffsetElement<char>() + offset_);
146146
}
147+
descriptor.raw().attribute = CFI_attribute_pointer;
147148
}
148149

149150
RT_API_ATTRS const DerivedType *DerivedType::GetParentType() const {
@@ -296,12 +297,6 @@ FILE *SpecialBinding::Dump(FILE *f) const {
296297
case Which::ScalarAssignment:
297298
std::fputs(" ScalarAssignment", f);
298299
break;
299-
case Which::ScalarAllocatableAssignment:
300-
std::fputs(" ScalarAllocatableAssignment", f);
301-
break;
302-
case Which::ScalarPointerAssignment:
303-
std::fputs(" ScalarPointerAssignment", f);
304-
break;
305300
case Which::ElementalAssignment:
306301
std::fputs(" ElementalAssignment", f);
307302
break;

flang/runtime/type-info.h

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ class Component {
8989
RT_API_ATTRS void EstablishDescriptor(
9090
Descriptor &, const Descriptor &container, Terminator &) const;
9191

92-
// Creates a descriptor from this component description, possibly
92+
// Creates a pointer descriptor from this component description, possibly
9393
// with subscripts
94-
RT_API_ATTRS void CreateTargetDescriptor(Descriptor &,
94+
RT_API_ATTRS void CreatePointerDescriptor(Descriptor &,
9595
const Descriptor &container, Terminator &,
9696
const SubscriptValue * = nullptr) const;
9797

@@ -126,16 +126,14 @@ class SpecialBinding {
126126
enum class Which : std::uint8_t {
127127
None = 0,
128128
ScalarAssignment = 1,
129-
ScalarAllocatableAssignment = 2,
130-
ScalarPointerAssignment = 3,
131-
ElementalAssignment = 4,
132-
ReadFormatted = 5,
133-
ReadUnformatted = 6,
134-
WriteFormatted = 7,
135-
WriteUnformatted = 8,
136-
ElementalFinal = 9,
137-
AssumedRankFinal = 10,
138-
ScalarFinal = 11,
129+
ElementalAssignment = 2,
130+
ReadFormatted = 3,
131+
ReadUnformatted = 4,
132+
WriteFormatted = 5,
133+
WriteUnformatted = 6,
134+
ElementalFinal = 7,
135+
AssumedRankFinal = 8,
136+
ScalarFinal = 9,
139137
// higher-ranked final procedures follow
140138
};
141139

flang/test/Semantics/typeinfo01.f90

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,8 @@ impure elemental subroutine s1(x, y)
102102
class(t), intent(out) :: x
103103
class(t), intent(in) :: y
104104
end subroutine
105-
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=.v.t,name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=16_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)
106-
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=4_1,isargdescriptorset=3_1,istypebound=1_1,isargcontiguousset=0_1,proc=s1)]
105+
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=.v.t,name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=4_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)
106+
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=2_1,isargdescriptorset=3_1,istypebound=1_1,isargcontiguousset=0_1,proc=s1)]
107107
!CHECK: .v.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:0_8 init:[binding::binding(proc=s1,name=.n.s1)]
108108
end module
109109

@@ -125,8 +125,8 @@ impure elemental subroutine s3(x)
125125
subroutine s4(x)
126126
type(t), contiguous :: x(:,:,:)
127127
end subroutine
128-
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=NULL(),name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=29184_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=0_1,nofinalizationneeded=0_1)
129-
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:3_8 init:[specialbinding::specialbinding(which=9_1,isargdescriptorset=0_1,istypebound=1_1,isargcontiguousset=0_1,proc=s3),specialbinding(which=12_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=s1),specialbinding(which=13_1,isargdescriptorset=0_1,istypebound=1_1,isargcontiguousset=1_1,proc=s2),specialbinding(which=14_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=1_1,proc=s4)]
128+
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=NULL(),name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=7296_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=0_1,nofinalizationneeded=0_1)
129+
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:3_8 init:[specialbinding::specialbinding(which=7_1,isargdescriptorset=0_1,istypebound=1_1,isargcontiguousset=0_1,proc=s3),specialbinding(which=10_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=s1),specialbinding(which=11_1,isargdescriptorset=0_1,istypebound=1_1,isargcontiguousset=1_1,proc=s2),specialbinding(which=12_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=1_1,proc=s4)]
130130
end module
131131

132132
module m09
@@ -167,8 +167,8 @@ subroutine wu(x,u,iostat,iomsg)
167167
integer, intent(out) :: iostat
168168
character(len=*), intent(inout) :: iomsg
169169
end subroutine
170-
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=.v.t,name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=480_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)
171-
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:3_8 init:[specialbinding::specialbinding(which=5_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=rf),specialbinding(which=6_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=ru),specialbinding(which=7_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wf),specialbinding(which=8_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wu)]
170+
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=.v.t,name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=120_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)
171+
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:3_8 init:[specialbinding::specialbinding(which=3_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=rf),specialbinding(which=4_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=ru),specialbinding(which=5_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wf),specialbinding(which=6_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wu)]
172172
!CHECK: .v.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:3_8 init:[binding::binding(proc=rf,name=.n.rf),binding(proc=ru,name=.n.ru),binding(proc=wf,name=.n.wf),binding(proc=wu,name=.n.wu)]
173173
end module
174174

@@ -216,8 +216,8 @@ subroutine wu(x,u,iostat,iomsg)
216216
integer, intent(out) :: iostat
217217
character(len=*), intent(inout) :: iomsg
218218
end subroutine
219-
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=NULL(),name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=480_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)
220-
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:3_8 init:[specialbinding::specialbinding(which=5_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=rf),specialbinding(which=6_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=ru),specialbinding(which=7_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=wf),specialbinding(which=8_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=wu)]
219+
!CHECK: .dt.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=NULL(),name=.n.t,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.t,specialbitset=120_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)
220+
!CHECK: .s.t, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:3_8 init:[specialbinding::specialbinding(which=3_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=rf),specialbinding(which=4_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=ru),specialbinding(which=5_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=wf),specialbinding(which=6_1,isargdescriptorset=0_1,istypebound=0_1,isargcontiguousset=0_1,proc=wu)]
221221
end module
222222

223223
module m11
@@ -260,7 +260,7 @@ module m13
260260
contains
261261
procedure :: assign1, assign2
262262
generic :: assignment(=) => assign1, assign2
263-
! CHECK: .s.t1, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=4_1,isargdescriptorset=3_1,istypebound=1_1,isargcontiguousset=0_1,proc=assign1)]
263+
! CHECK: .s.t1, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=2_1,isargdescriptorset=3_1,istypebound=1_1,isargcontiguousset=0_1,proc=assign1)]
264264
end type
265265
contains
266266
impure elemental subroutine assign1(to, from)

flang/test/Semantics/typeinfo02.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ subroutine wf2(x,u,iot,v,iostat,iomsg)
2929
character(len=*), intent(inout) :: iomsg
3030
end subroutine
3131
end module
32-
!CHECK: .s.base, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=7_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wf1)]
33-
!CHECK: .s.extended, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=7_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wf2)]
32+
!CHECK: .s.base, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=5_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wf1)]
33+
!CHECK: .s.extended, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(specialbinding) shape: 0_8:0_8 init:[specialbinding::specialbinding(which=5_1,isargdescriptorset=1_1,istypebound=1_1,isargcontiguousset=0_1,proc=wf2)]

flang/test/Semantics/typeinfo04.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module m
77
contains
88
final :: final
99
end type
10-
!CHECK: .dt.finalizable, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=NULL(),name=.n.finalizable,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.finalizable,specialbitset=512_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=0_1,nofinalizationneeded=0_1)
10+
!CHECK: .dt.finalizable, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(binding=NULL(),name=.n.finalizable,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),special=.s.finalizable,specialbitset=128_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=0_1,nofinalizationneeded=0_1)
1111
type, abstract :: t1
1212
end type
1313
!CHECK: .dt.t1, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(derivedtype) init:derivedtype(name=.n.t1,sizeinbytes=0_8,uninstantiated=NULL(),kindparameter=NULL(),lenparameterkind=NULL(),component=NULL(),procptr=NULL(),specialbitset=0_4,hasparent=0_1,noinitializationneeded=1_1,nodestructionneeded=1_1,nofinalizationneeded=1_1)

0 commit comments

Comments
 (0)