Clang-tidy fixes for recent IDPtr changes

This commit is contained in:
Tim Wojtulewicz 2025-09-03 15:34:29 -07:00
parent e3b22cd21f
commit 26ea7cc655
18 changed files with 50 additions and 51 deletions

View file

@ -4270,7 +4270,7 @@ LambdaExpr::LambdaExpr(LambdaExpr* orig) : Expr(EXPR_LAMBDA) {
// We need to have our own copies of the outer IDs and captures so // We need to have our own copies of the outer IDs and captures so
// we can rename them when inlined. // we can rename them when inlined.
for ( auto i : orig->outer_ids ) for ( auto& i : orig->outer_ids )
outer_ids.emplace_back(i); outer_ids.emplace_back(i);
if ( orig->captures ) { if ( orig->captures ) {
@ -4325,7 +4325,7 @@ bool LambdaExpr::CheckCaptures(StmtPtr when_parent) {
} }
} }
for ( auto id : outer_ids ) for ( const auto& id : outer_ids )
if ( ! outer_is_matched.contains(id) ) { if ( ! outer_is_matched.contains(id) ) {
auto msg = util::fmt("%s is used inside %s but not captured", id->Name(), desc); auto msg = util::fmt("%s is used inside %s but not captured", id->Name(), desc);
if ( when_parent ) if ( when_parent )

View file

@ -183,7 +183,7 @@ void Trigger::ReInit(std::vector<ValPtr> index_expr_results) {
have_trigger_elems = true; have_trigger_elems = true;
} }
for ( auto g : globals ) { for ( const auto& g : globals ) {
Register(g.get()); Register(g.get());
auto& v = g->GetVal(); auto& v = g->GetVal();
@ -191,7 +191,7 @@ void Trigger::ReInit(std::vector<ValPtr> index_expr_results) {
Register(v.get()); Register(v.get());
} }
for ( auto l : locals ) { for ( const auto& l : locals ) {
ASSERT(! l->GetVal()); ASSERT(! l->GetVal());
} }

View file

@ -761,7 +761,7 @@ IDPList gather_outer_ids(ScopePtr scope, StmtPtr body) {
IDPList idl; IDPList idl;
for ( auto& id : cb.outer_id_references ) for ( auto& id : cb.outer_id_references )
idl.emplace_back(std::move(id)); idl.emplace_back(id);
return idl; return idl;
} }

View file

@ -30,7 +30,7 @@ void CPPCompile::DeclareLambda(const LambdaExpr* l, const ProfileFunc* pf) {
auto l_id = l->Ingredients()->GetID(); auto l_id = l->Ingredients()->GetID();
auto& ids = l->OuterIDs(); auto& ids = l->OuterIDs();
for ( auto lid : ids ) { for ( const auto& lid : ids ) {
if ( lambda_names.contains(lid) ) { if ( lambda_names.contains(lid) ) {
ASSERT(lambda_names[lid] == CaptureName(lid)); ASSERT(lambda_names[lid] == CaptureName(lid));
} }
@ -227,7 +227,7 @@ void CPPCompile::BuildLambda(const FuncTypePtr& ft, const ProfileFunc* pf, const
Emit("void SetLambdaCaptures(Frame* f) override"); Emit("void SetLambdaCaptures(Frame* f) override");
StartBlock(); StartBlock();
for ( size_t i = 0; i < nl; ++i ) { for ( size_t i = 0; i < nl; ++i ) {
auto l_i = (*lambda_ids)[i]; const auto& l_i = (*lambda_ids)[i];
const auto& t_i = l_i->GetType(); const auto& t_i = l_i->GetType();
auto cap_i = string("f->GetElement(") + Fmt(static_cast<int>(i)) + ")"; auto cap_i = string("f->GetElement(") + Fmt(static_cast<int>(i)) + ")";
Emit("%s = %s;", lambda_names[l_i], GenericValPtrToGT(cap_i, t_i, GEN_NATIVE)); Emit("%s = %s;", lambda_names[l_i], GenericValPtrToGT(cap_i, t_i, GEN_NATIVE));
@ -239,7 +239,7 @@ void CPPCompile::BuildLambda(const FuncTypePtr& ft, const ProfileFunc* pf, const
StartBlock(); StartBlock();
Emit("std::vector<ValPtr> vals;"); Emit("std::vector<ValPtr> vals;");
for ( size_t i = 0; i < nl; ++i ) { for ( size_t i = 0; i < nl; ++i ) {
auto l_i = (*lambda_ids)[i]; const auto& l_i = (*lambda_ids)[i];
const auto& t_i = l_i->GetType(); const auto& t_i = l_i->GetType();
Emit("vals.emplace_back(%s);", NativeToGT(lambda_names[l_i], t_i, GEN_VAL_PTR)); Emit("vals.emplace_back(%s);", NativeToGT(lambda_names[l_i], t_i, GEN_VAL_PTR));
} }

View file

@ -145,7 +145,7 @@ void CPPCompile::DeclareLocals(const ProfileFunc* pf, const IDPList* lambda_ids)
// latter can be inconsistent when inlining. // latter can be inconsistent when inlining.
set<string> capture_names; set<string> capture_names;
if ( lambda_ids ) if ( lambda_ids )
for ( auto li : *lambda_ids ) for ( const auto& li : *lambda_ids )
capture_names.insert(CaptureName(li)); capture_names.insert(CaptureName(li));
const auto& ls = pf->Locals(); const auto& ls = pf->Locals();

View file

@ -178,7 +178,7 @@ void CPPCompile::GenTypeSwitchStmt(const Expr* e, const case_list* cases) {
for ( const auto& c : *cases ) { for ( const auto& c : *cases ) {
auto tc = c->TypeCases(); auto tc = c->TypeCases();
if ( tc ) if ( tc )
for ( auto id : *tc ) for ( const auto& id : *tc )
Emit(Fmt(TypeOffset(id->GetType())) + ","); Emit(Fmt(TypeOffset(id->GetType())) + ",");
} }
EndBlock(true); EndBlock(true);
@ -206,7 +206,7 @@ void CPPCompile::GenTypeSwitchStmt(const Expr* e, const case_list* cases) {
auto tc = c->TypeCases(); auto tc = c->TypeCases();
if ( tc ) { if ( tc ) {
bool is_multi = tc->size() > 1; bool is_multi = tc->size() > 1;
for ( auto id : *tc ) for ( const auto& id : *tc )
GenTypeSwitchCase(id, case_offset++, is_multi); GenTypeSwitchCase(id, case_offset++, is_multi);
} }
else else
@ -432,7 +432,7 @@ void CPPCompile::GenForOverTable(const ExprPtr& tbl, const IDPtr& value_var, con
int n = static_cast<int>(loop_vars->size()); int n = static_cast<int>(loop_vars->size());
for ( int i = 0; i < n; ++i ) { for ( int i = 0; i < n; ++i ) {
auto var = (*loop_vars)[i]; const auto& var = (*loop_vars)[i];
if ( var->IsBlank() ) if ( var->IsBlank() )
continue; continue;
@ -454,7 +454,7 @@ void CPPCompile::GenForOverVector(const ExprPtr& vec, const IDPtr& value_var, co
Emit("if ( ! vv__CPP->Has(i__CPP) ) continue;"); Emit("if ( ! vv__CPP->Has(i__CPP) ) continue;");
auto lv0 = (*loop_vars)[0]; const auto& lv0 = (*loop_vars)[0];
if ( ! lv0->IsBlank() ) if ( ! lv0->IsBlank() )
Emit("%s = i__CPP;", IDName(lv0)); Emit("%s = i__CPP;", IDName(lv0));
@ -475,7 +475,7 @@ void CPPCompile::GenForOverString(const ExprPtr& str, const IDPList* loop_vars)
Emit("auto sv__CPP = make_intrusive<StringVal>(1, (const char*) sval__CPP->Bytes() + i__CPP);"); Emit("auto sv__CPP = make_intrusive<StringVal>(1, (const char*) sval__CPP->Bytes() + i__CPP);");
auto lv0 = (*loop_vars)[0]; const auto& lv0 = (*loop_vars)[0];
if ( ! lv0->IsBlank() ) if ( ! lv0->IsBlank() )
Emit("%s = std::move(sv__CPP);", IDName(lv0)); Emit("%s = std::move(sv__CPP);", IDName(lv0));
} }

View file

@ -212,7 +212,7 @@ TraversalCode CSE_ValidityChecker::PostExpr(const Expr* e) {
} }
bool CSE_ValidityChecker::CheckID(const IDPtr& id, bool ignore_orig) { bool CSE_ValidityChecker::CheckID(const IDPtr& id, bool ignore_orig) {
for ( auto i : ids ) { for ( const auto& i : ids ) {
if ( ignore_orig && i == ids.front() ) if ( ignore_orig && i == ids.front() )
continue; continue;
@ -227,7 +227,7 @@ bool CSE_ValidityChecker::CheckAggrMod(const TypePtr& t) {
if ( ! IsAggr(t) ) if ( ! IsAggr(t) )
return false; return false;
for ( auto i : ids ) for ( const auto& i : ids )
if ( same_type(t, i->GetType()) ) if ( same_type(t, i->GetType()) )
return Invalid(); return Invalid();
@ -287,8 +287,8 @@ bool CSE_ValidityChecker::CheckSideEffects(const IDSet& non_local_ids, const Typ
// This is far and away the most common case. // This is far and away the most common case.
return false; return false;
for ( auto i : ids ) { for ( const auto& i : ids ) {
for ( auto nli : non_local_ids ) for ( const auto& nli : non_local_ids )
if ( nli == i ) if ( nli == i )
return Invalid(); return Invalid();

View file

@ -426,7 +426,7 @@ void GenIDDefs::StartConfluenceBlock(const Stmt* s) {
} }
void GenIDDefs::EndConfluenceBlock(bool no_orig) { void GenIDDefs::EndConfluenceBlock(bool no_orig) {
for ( auto id : modified_IDs.back() ) for ( const auto& id : modified_IDs.back() )
id->GetOptInfo()->ConfluenceBlockEndsAfter(last_stmt_traversed, no_orig); id->GetOptInfo()->ConfluenceBlockEndsAfter(last_stmt_traversed, no_orig);
confluence_blocks.pop_back(); confluence_blocks.pop_back();
@ -434,12 +434,12 @@ void GenIDDefs::EndConfluenceBlock(bool no_orig) {
} }
void GenIDDefs::BranchBackTo(const Stmt* from, const Stmt* to, bool close_all) { void GenIDDefs::BranchBackTo(const Stmt* from, const Stmt* to, bool close_all) {
for ( auto id : modified_IDs.back() ) for ( const auto& id : modified_IDs.back() )
id->GetOptInfo()->BranchBackTo(from, to, close_all); id->GetOptInfo()->BranchBackTo(from, to, close_all);
} }
void GenIDDefs::BranchBeyond(const Stmt* from, const Stmt* to, bool close_all) { void GenIDDefs::BranchBeyond(const Stmt* from, const Stmt* to, bool close_all) {
for ( auto id : modified_IDs.back() ) for ( const auto& id : modified_IDs.back() )
id->GetOptInfo()->BranchBeyond(from, to, close_all); id->GetOptInfo()->BranchBeyond(from, to, close_all);
to->GetOptInfo()->contains_branch_beyond = true; to->GetOptInfo()->contains_branch_beyond = true;
@ -479,7 +479,7 @@ void GenIDDefs::ReturnAt(const Stmt* s) {
// identifier as encountering a scope-ending "return" here. By avoiding // identifier as encountering a scope-ending "return" here. By avoiding
// that, we're able to do optimization across catch-return blocks. // that, we're able to do optimization across catch-return blocks.
if ( cr_active.empty() || cr_active.back() != confluence_blocks.size() ) if ( cr_active.empty() || cr_active.back() != confluence_blocks.size() )
for ( auto id : modified_IDs.back() ) for ( const auto& id : modified_IDs.back() )
id->GetOptInfo()->ReturnAt(s); id->GetOptInfo()->ReturnAt(s);
} }

View file

@ -35,7 +35,7 @@ ProfileFunc::ProfileFunc(const Func* func, const StmtPtr& body, bool _abs_rec_fi
int offset = 0; int offset = 0;
for ( auto& c : *fcaps ) { for ( auto& c : *fcaps ) {
auto cid = c.Id(); const auto& cid = c.Id();
captures.insert(cid); captures.insert(cid);
captures_offsets[cid] = offset++; captures_offsets[cid] = offset++;
} }
@ -51,7 +51,7 @@ ProfileFunc::ProfileFunc(const Func* func, const StmtPtr& body, bool _abs_rec_fi
// declaration. // declaration.
num_params = profiled_func_t->Params()->NumFields(); num_params = profiled_func_t->Params()->NumFields();
for ( auto l : locals ) { for ( const auto& l : locals ) {
if ( ! captures.contains(l) && l->Offset() < num_params ) if ( ! captures.contains(l) && l->Offset() < num_params )
params.insert(l); params.insert(l);
} }
@ -76,7 +76,7 @@ ProfileFunc::ProfileFunc(const Expr* e, bool _abs_rec_fields) {
int offset = 0; int offset = 0;
for ( auto oid : func->OuterIDs() ) { for ( const auto& oid : func->OuterIDs() ) {
captures.insert(oid); captures.insert(oid);
captures_offsets[oid] = offset++; captures_offsets[oid] = offset++;
} }
@ -130,7 +130,7 @@ TraversalCode ProfileFunc::PreStmt(const Stmt* s) {
auto w = s->AsWhenStmt(); auto w = s->AsWhenStmt();
auto wi = w->Info(); auto wi = w->Info();
for ( auto wl : wi->WhenNewLocals() ) for ( const auto& wl : wi->WhenNewLocals() )
when_locals.insert(wl); when_locals.insert(wl);
} break; } break;
@ -139,7 +139,7 @@ TraversalCode ProfileFunc::PreStmt(const Stmt* s) {
auto loop_vars = sf->LoopVars(); auto loop_vars = sf->LoopVars();
auto value_var = sf->ValueVar(); auto value_var = sf->ValueVar();
for ( auto id : *loop_vars ) for ( const auto& id : *loop_vars )
locals.insert(id); locals.insert(id);
if ( value_var ) if ( value_var )
@ -161,7 +161,7 @@ TraversalCode ProfileFunc::PreStmt(const Stmt* s) {
for ( auto& c : *sw->Cases() ) { for ( auto& c : *sw->Cases() ) {
auto idl = c->TypeCases(); auto idl = c->TypeCases();
if ( idl ) { if ( idl ) {
for ( auto id : *idl ) for ( const auto& id : *idl )
// Make sure it's not a placeholder // Make sure it's not a placeholder
// identifier, used when there's // identifier, used when there's
// no explicit one. // no explicit one.
@ -541,7 +541,7 @@ void ProfileFunc::TrackID(const IDPtr id) {
} }
void ProfileFunc::TrackAssignment(const IDPtr id) { void ProfileFunc::TrackAssignment(const IDPtr id) {
if ( assignees.count(id) > 0 ) if ( assignees.contains(id) )
++assignees[id]; ++assignees[id];
else else
assignees[id] = 1; assignees[id] = 1;
@ -685,7 +685,7 @@ bool ProfileFuncs::GetCallSideEffects(const NameExpr* n, IDSet& non_local_ids, T
for ( auto a : seo->ModAggrs() ) for ( auto a : seo->ModAggrs() )
aggrs.insert(a); aggrs.insert(a);
for ( auto nl : seo->ModNonLocals() ) for ( const auto& nl : seo->ModNonLocals() )
non_local_ids.insert(nl); non_local_ids.insert(nl);
return true; return true;
@ -878,7 +878,7 @@ void ProfileFuncs::ComputeProfileHash(std::shared_ptr<ProfileFunc> pf) {
h = merge_p_hashes(h, p_hash(i->Tag())); h = merge_p_hashes(h, p_hash(i->Tag()));
h = merge_p_hashes(h, p_hash("ids")); h = merge_p_hashes(h, p_hash("ids"));
for ( auto i : pf->OrderedIdentifiers() ) for ( const auto& i : pf->OrderedIdentifiers() )
h = merge_p_hashes(h, p_hash(i->Name())); h = merge_p_hashes(h, p_hash(i->Name()));
h = merge_p_hashes(h, p_hash("constants")); h = merge_p_hashes(h, p_hash("constants"));
@ -1408,7 +1408,7 @@ bool ProfileFuncs::AssessSideEffects(const SideEffectsOp* se, SideEffectsOp::Acc
for ( auto a : se->ModAggrs() ) for ( auto a : se->ModAggrs() )
aggrs.insert(a); aggrs.insert(a);
for ( auto nl : se->ModNonLocals() ) for ( const auto& nl : se->ModNonLocals() )
non_local_ids.insert(nl); non_local_ids.insert(nl);
return false; return false;

View file

@ -322,7 +322,7 @@ bool Reducer::ID_IsReducedOrTopLevel(const IDPtr& id) {
} }
bool Reducer::ID_IsReduced(const IDPtr& id) const { bool Reducer::ID_IsReduced(const IDPtr& id) const {
return inline_block_level == 0 || tracked_ids.count(id) > 0 || id->IsGlobal() || IsTemporary(id); return inline_block_level == 0 || tracked_ids.contains(id) || id->IsGlobal() || IsTemporary(id);
} }
StmtPtr Reducer::GenParam(const IDPtr& id, ExprPtr rhs, bool is_modified) { StmtPtr Reducer::GenParam(const IDPtr& id, ExprPtr rhs, bool is_modified) {
@ -518,8 +518,7 @@ bool Reducer::ExprValid(const IDPtr& id, const Expr* e1, const Expr* e2) const {
// Tracks which ID's are germane for our analysis. // Tracks which ID's are germane for our analysis.
std::vector<IDPtr> ids; std::vector<IDPtr> ids;
ids.push_back(id);
ids.push_back(std::move(id));
// Identify variables involved in the expression. // Identify variables involved in the expression.
CheckIDs(e1->GetOp1(), ids); CheckIDs(e1->GetOp1(), ids);
@ -550,7 +549,7 @@ void Reducer::CheckIDs(const ExprPtr& e, std::vector<IDPtr>& ids) const {
} }
bool Reducer::IsCSE(const AssignExpr* a, const NameExpr* lhs, const Expr* rhs) { bool Reducer::IsCSE(const AssignExpr* a, const NameExpr* lhs, const Expr* rhs) {
auto lhs_id = lhs->IdPtr(); const auto& lhs_id = lhs->IdPtr();
auto lhs_tmp = FindTemporary(lhs_id); // nil if LHS not a temporary auto lhs_tmp = FindTemporary(lhs_id); // nil if LHS not a temporary
auto rhs_tmp = FindExprTmp(rhs, a, lhs_tmp); auto rhs_tmp = FindExprTmp(rhs, a, lhs_tmp);
@ -705,7 +704,7 @@ ExprPtr Reducer::UpdateExpr(ExprPtr e) {
StmtPtr Reducer::MergeStmts(const NameExpr* lhs, ExprPtr rhs, const StmtPtr& succ_stmt) { StmtPtr Reducer::MergeStmts(const NameExpr* lhs, ExprPtr rhs, const StmtPtr& succ_stmt) {
// First check for tmp=rhs. // First check for tmp=rhs.
auto lhs_id = lhs->IdPtr(); const auto& lhs_id = lhs->IdPtr();
auto lhs_tmp = FindTemporary(lhs_id); auto lhs_tmp = FindTemporary(lhs_id);
if ( ! lhs_tmp ) if ( ! lhs_tmp )

View file

@ -83,7 +83,7 @@ public:
bool IsTemporary(const IDPtr& id) const { return FindTemporary(id) != nullptr; } bool IsTemporary(const IDPtr& id) const { return FindTemporary(id) != nullptr; }
bool IsParamTemp(const IDPtr& id) const { return param_temps.contains(id); } bool IsParamTemp(const IDPtr& id) const { return param_temps.contains(id); }
bool IsConstantVar(const IDPtr& id) const { return constant_vars.find(id) != constant_vars.end(); } bool IsConstantVar(const IDPtr& id) const { return constant_vars.contains(id); }
// True if the Reducer is being used in the context of a second // True if the Reducer is being used in the context of a second
// pass over for AST optimization. // pass over for AST optimization.

View file

@ -69,7 +69,7 @@ UsageAnalyzer::UsageAnalyzer(std::vector<FuncInfo>& funcs) {
for ( auto& gpair : globals ) { for ( auto& gpair : globals ) {
auto& id = gpair.second; auto& id = gpair.second;
if ( reachables.count(id) > 0 ) if ( reachables.contains(id) )
continue; continue;
auto f = GetFuncIfAny(id); auto f = GetFuncIfAny(id);
@ -119,7 +119,7 @@ public:
TraversalCode PreID(const ID* raw_id) override { TraversalCode PreID(const ID* raw_id) override {
IDPtr id{NewRef{}, const_cast<ID*>(raw_id)}; IDPtr id{NewRef{}, const_cast<ID*>(raw_id)};
if ( ids.count(id) > 0 ) if ( ids.contains(id) )
return TC_ABORTSTMT; return TC_ABORTSTMT;
if ( attr_depth > 0 ) if ( attr_depth > 0 )
@ -151,7 +151,7 @@ void UsageAnalyzer::FindSeeds(IDSet& seeds) const {
auto f = GetFuncIfAny(id); auto f = GetFuncIfAny(id);
if ( f && id->GetType<FuncType>()->Flavor() == FUNC_FLAVOR_EVENT ) { if ( f && id->GetType<FuncType>()->Flavor() == FUNC_FLAVOR_EVENT ) {
if ( script_events.count(f->GetName()) == 0 ) if ( ! script_events.contains(f->GetName()) )
seeds.insert(id); seeds.insert(id);
continue; continue;
@ -201,7 +201,7 @@ void UsageAnalyzer::FullyExpandReachables() {
bool UsageAnalyzer::ExpandReachables(const IDSet& curr_r) { bool UsageAnalyzer::ExpandReachables(const IDSet& curr_r) {
new_reachables.clear(); new_reachables.clear();
for ( auto r : curr_r ) for ( const auto& r : curr_r )
Expand(r); Expand(r);
return ! new_reachables.empty(); return ! new_reachables.empty();
@ -229,7 +229,7 @@ void UsageAnalyzer::Expand(const IDPtr& id) {
TraversalCode UsageAnalyzer::PreID(const ID* raw_id) { TraversalCode UsageAnalyzer::PreID(const ID* raw_id) {
IDPtr id{NewRef{}, const_cast<ID*>(raw_id)}; IDPtr id{NewRef{}, const_cast<ID*>(raw_id)};
if ( analyzed_IDs.count(id) > 0 ) if ( analyzed_IDs.contains(id) )
// No need to repeat the analysis. // No need to repeat the analysis.
return TC_ABORTSTMT; return TC_ABORTSTMT;

View file

@ -609,11 +609,11 @@ void UseDefs::FoldInUDs(UDs& main_UDs, const UDs& u1, const UDs& u2) {
main_UDs->Replicate(old_main); main_UDs->Replicate(old_main);
if ( u1 ) if ( u1 )
for ( auto ud : u1->IterateOver() ) for ( const auto& ud : u1->IterateOver() )
main_UDs->Add(ud); main_UDs->Add(ud);
if ( u2 ) if ( u2 )
for ( auto ud : u2->IterateOver() ) for ( const auto& ud : u2->IterateOver() )
main_UDs->Add(ud); main_UDs->Add(ud);
} }
@ -633,7 +633,7 @@ void UseDefs::UpdateUDs(const Stmt* s, const UDs& uds) {
} }
if ( uds ) { if ( uds ) {
for ( auto u : uds->IterateOver() ) for ( const auto& u : uds->IterateOver() )
curr_uds->Add(u); curr_uds->Add(u);
} }
} }

View file

@ -27,7 +27,7 @@ public:
void Replicate(const UDs& from) { use_defs = from->use_defs; } void Replicate(const UDs& from) { use_defs = from->use_defs; }
bool HasID(const IDPtr& id) { return use_defs.find(id) != use_defs.end(); } bool HasID(const IDPtr& id) const { return use_defs.contains(id); }
void Add(IDPtr id) { use_defs.insert(std::move(id)); } void Add(IDPtr id) { use_defs.insert(std::move(id)); }
void Remove(const IDPtr& id) { use_defs.erase(id); } void Remove(const IDPtr& id) { use_defs.erase(id); }

View file

@ -510,7 +510,7 @@ void ZAMCompiler::ReMapFrame() {
continue; continue;
auto vars = inst_beginnings[inst]; auto vars = inst_beginnings[inst];
for ( auto v : vars ) { for ( const auto& v : vars ) {
// Don't remap variables whose values aren't actually used. // Don't remap variables whose values aren't actually used.
int slot = frame_layout1[v]; int slot = frame_layout1[v];
if ( denizen_ending.contains(slot) ) if ( denizen_ending.contains(slot) )

View file

@ -77,7 +77,7 @@ void ZAMCompiler::InitArgs() {
} }
void ZAMCompiler::InitCaptures() { void ZAMCompiler::InitCaptures() {
for ( auto c : pf->Captures() ) for ( const auto& c : pf->Captures() )
(void)AddToFrame(c); (void)AddToFrame(c);
} }

View file

@ -528,7 +528,7 @@ const ZAMStmt ZAMCompiler::GenSwitch(const SwitchStmt* sw, int slot, InternalTyp
// For type switches, we map them to consecutive numbers, and then use // For type switches, we map them to consecutive numbers, and then use
// a integer-valued switch on those. // a integer-valued switch on those.
int tm_ctr = 0; int tm_ctr = 0;
for ( auto [_, index] : *sw->TypeMap() ) { for ( const auto& [_, index] : *sw->TypeMap() ) {
auto case_body_start = case_start[index]; auto case_body_start = case_start[index];
new_int_cases[tm_ctr++] = case_body_start; new_int_cases[tm_ctr++] = case_body_start;
} }

View file

@ -68,7 +68,7 @@ const ZAMStmt ZAMCompiler::LoadGlobal(const IDPtr& id) {
// We use the id_val for reporting used-but-not-set errors. // We use the id_val for reporting used-but-not-set errors.
z.aux = new ZInstAux(0); z.aux = new ZInstAux(0);
z.aux->id_val = std::move(id); z.aux->id_val = id;
return AddInst(z, true); return AddInst(z, true);
} }