From 6faad5e5ca0c284a79c85c026c8a9371b0c48848 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Fri, 9 Aug 2024 09:26:52 -0700 Subject: [PATCH] fix for script optimization of "opaque" values that are run-time constants --- src/script_opt/Expr.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/script_opt/Expr.cc b/src/script_opt/Expr.cc index a7c76ed72a..5a04a3bef1 100644 --- a/src/script_opt/Expr.cc +++ b/src/script_opt/Expr.cc @@ -475,7 +475,8 @@ ExprPtr UnaryExpr::Reduce(Reducer* c, StmtPtr& red_stmt) { auto op_val = op->FoldVal(); if ( op_val ) { auto fold = Fold(op_val.get()); - return TransformMe(make_intrusive(fold), c, red_stmt); + if ( fold->GetType()->Tag() != TYPE_OPAQUE ) + return TransformMe(make_intrusive(fold), c, red_stmt); } if ( c->Optimizing() ) @@ -523,7 +524,8 @@ ExprPtr BinaryExpr::Reduce(Reducer* c, StmtPtr& red_stmt) { auto op2_fold_val = op2->FoldVal(); if ( op1_fold_val && op2_fold_val ) { auto fold = Fold(op1_fold_val.get(), op2_fold_val.get()); - return TransformMe(make_intrusive(fold), c, red_stmt); + if ( fold->GetType()->Tag() != TYPE_OPAQUE ) + return TransformMe(make_intrusive(fold), c, red_stmt); } if ( c->Optimizing() )