blob: 28527de5db13a0e39944cf36a3f243b9cc773ef8 [file] [log] [blame]
/* We used to ICE as we did not mark a Vop for rename as
we changed a function call to a normal modify statement
while folding exp(0.0); */
double exp(double);
void f0(void);
void f(double);
typedef struct Parser {
int x;
char *s;
} Parser;
static double pop(Parser *p) {
if (p->s[0] <= 0) {
f0();
return 0;
}
--p->x;
return 0;
}
static void evalFactor(Parser *p) {
while (p->x)
f(exp(pop(p)));
}
static void evalTerm(Parser *p) {
while (p->s[0])
evalFactor(p);
}
static void evalExpression(Parser *p) {
evalTerm(p);
while (p->s[0])
evalTerm(p);
}
void evalPrimary(Parser *p) {
if (p->s)
return;
evalExpression(p);
}