Skip to content
Snippets Groups Projects
Commit 1fb451d1 authored by Henrik (Grubba) Grubbström's avatar Henrik (Grubba) Grubbström
Browse files

Fixed bug in the `+() and `*() optimizations.

Rev: src/treeopt.in:1.45
parent 7af26119
Branches
Tags
No related merge requests found
// -*- c -*- // -*- c -*-
// //
// $Id: treeopt.in,v 1.44 2000/09/30 23:50:12 per Exp $ // $Id: treeopt.in,v 1.45 2000/10/01 17:58:12 grubba Exp $
// //
// The tree optimizer // The tree optimizer
// //
...@@ -64,18 +64,20 @@ F_APPLY(0 = F_CONSTANT ...@@ -64,18 +64,20 @@ F_APPLY(0 = F_CONSTANT
[$$->u.sval.type == T_FUNCTION] [$$->u.sval.type == T_FUNCTION]
[$$->u.sval.subtype == FUNCTION_BUILTIN] [$$->u.sval.subtype == FUNCTION_BUILTIN]
[$$->u.sval.u.efun->function == f_add], [$$->u.sval.u.efun->function == f_add],
2 = F_ARG_LIST(3 = F_APPLY($0, 1), *)): 2 = F_ARG_LIST(F_APPLY($0, 1), 3)):
{ {
node *arglist = $2; node *arglist = $2;
node *old_apply = $3;
ADD_NODE_REF2($1, _CAR(arglist) = $1);
#ifdef SHARED_NODES #ifdef SHARED_NODES
sub_node( arglist ); sub_node(n);
arglist->hash = hash_node(arglist); #endif /* SHARED_NODES */
add_node( arglist ); ADD_NODE_REF2($1,
arglist->node_info |= OPT_DEFROSTED; ADD_NODE_REF2($3,
_CDR(n) = mknode(F_ARG_LIST, $1, $3)));
#ifdef SHARED_NODES
n->hash = hash_node(n);
n->node_info |= OPT_DEFROSTED;
#endif /* SHARED_NODES */ #endif /* SHARED_NODES */
free_node(old_apply); free_node(arglist);
#ifdef PIKE_DEBUG #ifdef PIKE_DEBUG
if (l_flag > 4) { if (l_flag > 4) {
fprintf(stderr, "Result: "); fprintf(stderr, "Result: ");
...@@ -98,15 +100,17 @@ F_APPLY(0 = F_CONSTANT ...@@ -98,15 +100,17 @@ F_APPLY(0 = F_CONSTANT
2 = F_ARG_LIST(3 = F_APPLY($0, 1), *)): 2 = F_ARG_LIST(3 = F_APPLY($0, 1), *)):
{ {
node *arglist = $2; node *arglist = $2;
node *old_apply = $3;
ADD_NODE_REF2($1, _CAR(arglist) = $1);
#ifdef SHARED_NODES #ifdef SHARED_NODES
sub_node( arglist ); sub_node(n);
arglist->hash = hash_node(arglist); #endif /* SHARED_NODES */
add_node( arglist ); ADD_NODE_REF2($1,
arglist->node_info |= OPT_DEFROSTED; ADD_NODE_REF2($3,
_CDR(n) = mknode(F_ARG_LIST, $1, $3)));
#ifdef SHARED_NODES
n->hash = hash_node(n);
n->node_info |= OPT_DEFROSTED;
#endif /* SHARED_NODES */ #endif /* SHARED_NODES */
free_node(old_apply); free_node(arglist);
#ifdef PIKE_DEBUG #ifdef PIKE_DEBUG
if (l_flag > 4) { if (l_flag > 4) {
fprintf(stderr, "Result: "); fprintf(stderr, "Result: ");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment