mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 04:28:20 +00:00
Merge remote-tracking branch 'origin/topic/vern/zam-regularization'
* origin/topic/vern/zam-regularization: (33 commits) simpler and more robust identification of function parameters for AST profiling fixes to limit AST traversal in the face of recursive types address some script optimization compiler warnings under Linux fix for -O C++ construction of variable names that use multiple module namespaces fix for script optimization of "opaque" values that are run-time constants fix for script optimization of nested switch statements script optimization fix for complex "in" expressions in conditionals updates to typos allow-list reflecting ZAM regularization changes BTest updates for ZAM regularization changes convert new ZAM operations to use typed operands complete migration of ZAM to use only public ZVal methods "-O validate-ZAM" option to validate generated ZAM instructions internal option to suppress control-flow optimization exposing some functionality for greater flexibility in structuring run-time execution rework ZAM compilation of type switches to leverage value switches add tracking of control flow information factoring of ZAM operation specifications into separate files updates to ZAM operations / gen-zam regularization, other than the operations themselves type-checking fix for vector-of-string operations ZVal constructor for booleans ...
This commit is contained in:
commit
ec1088c3ef
78 changed files with 4410 additions and 3917 deletions
14
src/Expr.cc
14
src/Expr.cc
|
@ -1985,8 +1985,10 @@ EqExpr::EqExpr(ExprTag arg_tag, ExprPtr arg_op1, ExprPtr arg_op2)
|
|||
}
|
||||
}
|
||||
|
||||
else if ( bt1 == TYPE_PATTERN && bt2 == TYPE_STRING )
|
||||
;
|
||||
else if ( (bt1 == TYPE_PATTERN && bt2 == TYPE_STRING) || (bt1 == TYPE_STRING && bt2 == TYPE_PATTERN) ) {
|
||||
if ( op1->GetType()->Tag() == TYPE_VECTOR )
|
||||
ExprError("cannot compare string vectors with pattern vectors");
|
||||
}
|
||||
|
||||
else
|
||||
ExprError("type clash in comparison");
|
||||
|
@ -4063,11 +4065,15 @@ bool CallExpr::IsPure() const {
|
|||
if ( IsError() )
|
||||
return true;
|
||||
|
||||
if ( ! func->IsPure() )
|
||||
if ( func->Tag() != EXPR_NAME )
|
||||
// Indirect call, can't resolve up front.
|
||||
return false;
|
||||
|
||||
auto func_val = func->Eval(nullptr);
|
||||
auto func_id = func->AsNameExpr()->Id();
|
||||
if ( ! func_id->IsGlobal() )
|
||||
return false;
|
||||
|
||||
auto func_val = func_id->GetVal();
|
||||
if ( ! func_val )
|
||||
return false;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue