From 29073974bda18f4692d828f6f4c18d5fd787e37d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Sat, 6 Nov 1999 01:08:45 +0100 Subject: [PATCH] Improved optimizations of F_COMMA_EXPR. Rev: src/las.c:1.97 --- src/las.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/las.c b/src/las.c index fc5d39def7..8b490c627e 100644 --- a/src/las.c +++ b/src/las.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: las.c,v 1.96 1999/11/05 23:22:04 grubba Exp $"); +RCSID("$Id: las.c,v 1.97 1999/11/06 00:08:45 grubba Exp $"); #include "language.h" #include "interpret.h" @@ -1952,6 +1952,12 @@ static void optimize(node *n) if (CAR(n)->token == F_CONSTANT) { goto use_cdr; } + /* ((void) const) , X -> X */ + if (CAR(n)->token == F_CAST && + CAR(n)->type == void_type_string && + CAAR(n)->token == F_CONSTANT) { + goto use_cdr; + } /* (X , const) , Y -> X , Y */ if (CAR(n)->token == F_COMMA_EXPR && CDAR(n)->token == F_CONSTANT) { @@ -1959,7 +1965,16 @@ static void optimize(node *n) CAAR(n) = CDR(n) = 0; goto use_tmp1; } - + /* ((void)(X, const)), Y -> ((void) X), Y */ + if (CAR(n)->token == F_CAST && + CAR(n)->type == void_type_string && + CAAR(n)->token == F_COMMA_EXPR && + CDR(CAAR(n))->token == F_CONSTANT) { + tmp1 = mknode(F_COMMA_EXPR, mkcastnode(void_type_string, CAR(CAAR(n))), + CDR(n)); + CAR(CAAR(n)) = CDR(n) = 0; + goto use_tmp1; + } /* FALL_THROUGH */ case F_ARG_LIST: case F_LVALUE_LIST: -- GitLab