rose: write fragment ids into literal_info

This commit is contained in:
Justin Viiret 2017-02-13 15:54:16 +11:00 committed by Matthew Barr
parent 1eae677d73
commit 8b25d83415
2 changed files with 11 additions and 1 deletions

View File

@ -5409,6 +5409,15 @@ aligned_unique_ptr<RoseEngine> RoseBuildImpl::buildFinalEngine(u32 minWidth) {
allocateFinalLiteralId(*this, bc); allocateFinalLiteralId(*this, bc);
final_to_frag_map = groupByFragment(*this, bc); final_to_frag_map = groupByFragment(*this, bc);
// Write the fragment IDs into the literal_info structures.
for (auto &info : literal_info) {
if (info.final_id == MO_INVALID_IDX) {
continue;
}
assert(contains(final_to_frag_map, info.final_id));
info.fragment_id = final_to_frag_map.at(info.final_id).fragment_id;
}
auto anchored_dfas = buildAnchoredDfas(*this); auto anchored_dfas = buildAnchoredDfas(*this);
bc.floatingMinLiteralMatchOffset = bc.floatingMinLiteralMatchOffset =

View File

@ -264,7 +264,8 @@ struct rose_literal_info {
ue2::flat_set<RoseVertex> vertices; ue2::flat_set<RoseVertex> vertices;
rose_group group_mask = 0; rose_group group_mask = 0;
u32 undelayed_id = MO_INVALID_IDX; u32 undelayed_id = MO_INVALID_IDX;
u32 final_id = MO_INVALID_IDX; /* id reported by fdr */ u32 final_id = MO_INVALID_IDX; // TODO: remove
u32 fragment_id = MO_INVALID_IDX; //!< ID corresponding to literal prog.
bool squash_group = false; bool squash_group = false;
bool requires_benefits = false; bool requires_benefits = false;
}; };