fixes & enhancements to location information associated w/ AST nodes & ZAM optimization

This commit is contained in:
Vern Paxson 2024-01-25 13:11:56 -08:00 committed by Arne Welzel
parent 7a283afe00
commit e5bb63c662
14 changed files with 299 additions and 259 deletions

View file

@ -870,21 +870,30 @@ const ZAMStmt ZAMCompiler::AssignTableElem(const Expr* e) {
}
const ZAMStmt ZAMCompiler::Call(const ExprStmt* e) {
if ( IsZAM_BuiltIn(e->StmtExpr()) )
return LastInst();
auto c = cast_intrusive<CallExpr>(e->StmtExprPtr());
if ( IsZAM_BuiltIn(c.get()) ) {
auto ret = LastInst();
insts1.back()->call_expr = c;
return ret;
}
return DoCall(e->StmtExpr()->AsCallExpr(), nullptr);
}
const ZAMStmt ZAMCompiler::AssignToCall(const ExprStmt* e) {
if ( IsZAM_BuiltIn(e->StmtExpr()) )
return LastInst();
auto assign = e->StmtExpr()->AsAssignExpr();
auto n = assign->GetOp1()->AsRefExpr()->GetOp1()->AsNameExpr();
auto call = assign->GetOp2()->AsCallExpr();
auto call = cast_intrusive<CallExpr>(assign->GetOp2());
return DoCall(call, n);
if ( IsZAM_BuiltIn(e->StmtExpr()) ) {
auto ret = LastInst();
insts1.back()->call_expr = call;
return ret;
}
auto n = assign->GetOp1()->AsRefExpr()->GetOp1()->AsNameExpr();
return DoCall(call.get(), n);
}
const ZAMStmt ZAMCompiler::DoCall(const CallExpr* c, const NameExpr* n) {