Skip to content

Commit 4f1f0fc

Browse files
dwblaikiejosh11b
andauthored
Add unit tagging to ImportIRId (#6265)
Co-authored-by: josh11b <[email protected]>
1 parent c329bce commit 4f1f0fc

File tree

6 files changed

+233
-214
lines changed

6 files changed

+233
-214
lines changed

toolchain/check/import.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,10 @@ static auto CopySingleNameScopeFromImportIR(
246246

247247
auto namespace_const_id =
248248
context.constant_values().Get(result.add_result.inst_id);
249-
context.import_ir_constant_values()[ir_id.index].Set(import_inst_id,
250-
namespace_const_id);
249+
context
250+
.import_ir_constant_values()[context.sem_ir().import_irs().GetRawIndex(
251+
ir_id)]
252+
.Set(import_inst_id, namespace_const_id);
251253

252254
if (copied_namespaces) {
253255
CacheCopiedNamespace(*copied_namespaces, import_scope_id,
@@ -484,9 +486,11 @@ auto ImportLibrariesFromCurrentPackage(
484486
for (auto import_ir : import_irs) {
485487
auto ir_id = AddImportIR(context, import_ir);
486488

487-
context.import_ir_constant_values()[ir_id.index].Set(
488-
SemIR::Namespace::PackageInstId,
489-
context.constant_values().Get(SemIR::Namespace::PackageInstId));
489+
context
490+
.import_ir_constant_values()[context.sem_ir().import_irs().GetRawIndex(
491+
ir_id)]
492+
.Set(SemIR::Namespace::PackageInstId,
493+
context.constant_values().Get(SemIR::Namespace::PackageInstId));
490494

491495
for (const auto import_inst_id :
492496
import_ir.sem_ir->inst_blocks().Get(SemIR::InstBlockId::Exports)) {
@@ -548,8 +552,10 @@ auto ImportLibrariesFromOtherPackage(Context& context,
548552
for (auto import_ir : import_irs) {
549553
auto ir_id = AddImportIR(context, import_ir);
550554
scope.AddImportIRScope({ir_id, SemIR::NameScopeId::Package});
551-
context.import_ir_constant_values()[ir_id.index].Set(
552-
SemIR::Namespace::PackageInstId, namespace_const_id);
555+
context
556+
.import_ir_constant_values()[context.sem_ir().import_irs().GetRawIndex(
557+
ir_id)]
558+
.Set(SemIR::Namespace::PackageInstId, namespace_const_id);
553559
}
554560
if (has_load_error) {
555561
scope.set_has_error();

toolchain/check/import_ref.cpp

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,10 @@ static auto AddLoadedImportRef(Context& context, SemIR::TypeId type_id,
117117
context.imports().push_back(inst_id);
118118

119119
context.constant_values().Set(inst_id, const_id);
120-
context.import_ir_constant_values()[import_ir_inst.ir_id().index].Set(
121-
import_ir_inst.inst_id(), const_id);
120+
context
121+
.import_ir_constant_values()[context.sem_ir().import_irs().GetRawIndex(
122+
import_ir_inst.ir_id())]
123+
.Set(import_ir_inst.inst_id(), const_id);
122124
return inst_id;
123125
}
124126

@@ -290,7 +292,8 @@ class ImportContext {
290292
// from `InstId`s in the import IR to corresponding `ConstantId`s in the local
291293
// IR.
292294
auto local_constant_values_for_import_insts() -> SemIR::ConstantValueStore& {
293-
return local_context().import_ir_constant_values()[import_ir_id_.index];
295+
return local_context().import_ir_constant_values()
296+
[local_context().sem_ir().import_irs().GetRawIndex(import_ir_id_)];
294297
}
295298

296299
// Returns the file we are importing into.
@@ -636,9 +639,12 @@ class ImportRefResolver : public ImportContext {
636639
CARBON_CHECK(cursor_ir != prev_ir || cursor_inst_id != prev_inst_id,
637640
"{0}", cursor_ir->insts().Get(cursor_inst_id));
638641

639-
if (auto const_id = local_context()
640-
.import_ir_constant_values()[cursor_ir_id.index]
641-
.GetAttached(cursor_inst_id);
642+
if (auto const_id =
643+
local_context()
644+
.import_ir_constant_values()
645+
[local_context().sem_ir().import_irs().GetRawIndex(
646+
cursor_ir_id)]
647+
.GetAttached(cursor_inst_id);
642648
const_id.has_value()) {
643649
SetResolvedConstId(inst_id, result.indirect_insts, const_id);
644650
result.const_id = const_id;
@@ -658,7 +664,9 @@ class ImportRefResolver : public ImportContext {
658664
local_constant_values_for_import_insts().Set(inst_id, const_id);
659665
for (auto indirect_inst : indirect_insts) {
660666
local_context()
661-
.import_ir_constant_values()[indirect_inst.ir_id().index]
667+
.import_ir_constant_values()
668+
[local_context().sem_ir().import_irs().GetRawIndex(
669+
indirect_inst.ir_id())]
662670
.Set(indirect_inst.inst_id(), const_id);
663671
}
664672
}
@@ -3699,8 +3707,10 @@ auto LoadImportRef(Context& context, SemIR::InstId inst_id) -> void {
36993707
// Store the constant for both the ImportRefLoaded and indirect instructions.
37003708
context.constant_values().Set(inst_id, constant_id);
37013709
for (const auto& import_ir_inst : indirect_insts) {
3702-
context.import_ir_constant_values()[import_ir_inst.ir_id().index].Set(
3703-
import_ir_inst.inst_id(), constant_id);
3710+
context
3711+
.import_ir_constant_values()[context.sem_ir().import_irs().GetRawIndex(
3712+
import_ir_inst.ir_id())]
3713+
.Set(import_ir_inst.inst_id(), constant_id);
37043714
}
37053715
}
37063716

toolchain/check/testdata/basics/raw_sem_ir/multifile.carbon

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ fn B() {
9191
// CHECK:STDOUT: import_irs:
9292
// CHECK:STDOUT: 'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
9393
// CHECK:STDOUT: 'import_ir(Cpp)': {decl_id: inst<none>, is_export: false}
94-
// CHECK:STDOUT: import_ir00000002: {decl_id: inst5000000F, is_export: false}
94+
// CHECK:STDOUT: import_ir50000002: {decl_id: inst5000000F, is_export: false}
9595
// CHECK:STDOUT: import_ir_insts:
96-
// CHECK:STDOUT: import_ir_inst00000000: {ir_id: import_ir00000002, inst_id: inst6000000F}
97-
// CHECK:STDOUT: import_ir_inst00000001: {ir_id: import_ir00000002, inst_id: inst6000000F}
96+
// CHECK:STDOUT: import_ir_inst00000000: {ir_id: import_ir50000002, inst_id: inst6000000F}
97+
// CHECK:STDOUT: import_ir_inst00000001: {ir_id: import_ir50000002, inst_id: inst6000000F}
9898
// CHECK:STDOUT: clang_decls: {}
9999
// CHECK:STDOUT: name_scopes:
100100
// CHECK:STDOUT: name_scope00000000: {inst: inst0000000E, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name00000001: inst50000010, name00000000: inst50000011}}

toolchain/check/testdata/basics/raw_sem_ir/multifile_with_textual_ir.carbon

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,10 @@ fn B() {
110110
// CHECK:STDOUT: import_irs:
111111
// CHECK:STDOUT: 'import_ir(ApiForImpl)': {decl_id: inst<none>, is_export: false}
112112
// CHECK:STDOUT: 'import_ir(Cpp)': {decl_id: inst<none>, is_export: false}
113-
// CHECK:STDOUT: import_ir00000002: {decl_id: inst5000000F, is_export: false}
113+
// CHECK:STDOUT: import_ir50000002: {decl_id: inst5000000F, is_export: false}
114114
// CHECK:STDOUT: import_ir_insts:
115-
// CHECK:STDOUT: import_ir_inst00000000: {ir_id: import_ir00000002, inst_id: inst6000000F}
116-
// CHECK:STDOUT: import_ir_inst00000001: {ir_id: import_ir00000002, inst_id: inst6000000F}
115+
// CHECK:STDOUT: import_ir_inst00000000: {ir_id: import_ir50000002, inst_id: inst6000000F}
116+
// CHECK:STDOUT: import_ir_inst00000001: {ir_id: import_ir50000002, inst_id: inst6000000F}
117117
// CHECK:STDOUT: clang_decls: {}
118118
// CHECK:STDOUT: name_scopes:
119119
// CHECK:STDOUT: name_scope00000000: {inst: inst0000000E, parent_scope: name_scope<none>, has_error: false, extended_scopes: [], names: {name00000001: inst50000010, name00000000: inst50000011}}

0 commit comments

Comments
 (0)