aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-12-13 14:34:08 +0000
committerdos-reis <gdr@axiomatics.org>2007-12-13 14:34:08 +0000
commit2f2cf5024ab894aa083d87f1e008528d5a5c717b (patch)
tree9c7487c2e90c37104a75bc312cbd433e30a442b9
parent0735647191a08b7f50d4e3c7ffe94bd370ebd68b (diff)
downloadopen-axiom-2f2cf5024ab894aa083d87f1e008528d5a5c717b.tar.gz
* c-util.boot (isAlmostSimple): A `case' expresion with a simple
identified as first operand is a simple-expression.
-rw-r--r--src/interp/ChangeLog5
-rw-r--r--src/interp/c-util.boot1
2 files changed, 6 insertions, 0 deletions
diff --git a/src/interp/ChangeLog b/src/interp/ChangeLog
index 84afa26c..81b92178 100644
--- a/src/interp/ChangeLog
+++ b/src/interp/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-13 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * c-util.boot (isAlmostSimple): A `case' expresion with a simple
+ identified as first operand is a simple-expression.
+
2007-12-12 Gabriel Dos Reis <gdr@cs.tamu.edu>
* parse.boot: Register parsers by name, not by pointers.
diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot
index d5b8492e..05a65bb7 100644
--- a/src/interp/c-util.boot
+++ b/src/interp/c-util.boot
@@ -382,6 +382,7 @@ isAlmostSimple x ==
op="LET" =>
IDENTP y => (setAssignment LIST x; y)
(setAssignment [["LET",g:= genVariable(),:l],["LET",y,g]]; g)
+ op = "case" and IDENTP y => x
isSideEffectFree op => [op,:mapInto(rest x, function fn)]
$assignmentList:= "failed"
setAssignment x ==