24 bool lookThroughCasts) {
28 SmallVector<FieldRef> indexing;
39 auto it =
refs.find(
Key(value, lookThroughCasts));
40 if (it !=
refs.end()) {
45 auto ref = it->second;
50 indexing.emplace_back(value, ref.getFieldID());
51 indexing.emplace_back(ref.getValue(), 0);
58 auto deltaRef =
getDeltaRef(value, lookThroughCasts);
59 indexing.emplace_back(value, deltaRef.getFieldID());
60 value = deltaRef.getValue();
64 assert(indexing.back().getFieldID() == 0);
66 auto root = indexing.back().getValue();
69 for (
auto &info : llvm::reverse(indexing)) {
70 id += info.getFieldID();
72 refs.try_emplace({info.getValue(), lookThroughCasts}, cur);