diff --git a/code/tools/lcc/src/c.h b/code/tools/lcc/src/c.h index b46cf3bf..e36380ef 100644 --- a/code/tools/lcc/src/c.h +++ b/code/tools/lcc/src/c.h @@ -81,7 +81,7 @@ typedef struct table *Table; typedef union value { long i; unsigned long u; - long double d; + double d; void *p; void (*g)(void); } Value; diff --git a/code/tools/lcc/src/enode.c b/code/tools/lcc/src/enode.c index 0f2adbdd..760096de 100644 --- a/code/tools/lcc/src/enode.c +++ b/code/tools/lcc/src/enode.c @@ -184,7 +184,7 @@ Tree cnsttree(Type ty, ...) { switch (ty->op) { case INT: p->u.v.i = va_arg(ap, long); break; case UNSIGNED:p->u.v.u = va_arg(ap, unsigned long)&ones(8*ty->size); break; - case FLOAT: p->u.v.d = va_arg(ap, long double); break; + case FLOAT: p->u.v.d = va_arg(ap, double); break; case POINTER: p->u.v.p = va_arg(ap, void *); break; default: assert(0); } diff --git a/code/tools/lcc/src/simp.c b/code/tools/lcc/src/simp.c index 227dfbb2..ea26ab69 100644 --- a/code/tools/lcc/src/simp.c +++ b/code/tools/lcc/src/simp.c @@ -246,15 +246,15 @@ Tree simplify(int op, Type ty, Tree l, Tree r) { break; case CVI+F: - xcvtcnst(I,l->u.v.i,ty,d,(long double)l->u.v.i); + xcvtcnst(I,l->u.v.i,ty,d,(double)l->u.v.i); case CVU+F: - xcvtcnst(U,l->u.v.u,ty,d,(long double)l->u.v.u); + xcvtcnst(U,l->u.v.u,ty,d,(double)l->u.v.u); break; case CVF+I: xcvtcnst(F,l->u.v.d,ty,i,(long)l->u.v.d); break; case CVF+F: { - float d; + float d = 0.0f; if (l->op == CNST+F) { if (l->u.v.d < ty->u.sym->u.limits.min.d) d = ty->u.sym->u.limits.min.d; @@ -263,7 +263,7 @@ Tree simplify(int op, Type ty, Tree l, Tree r) { else d = l->u.v.d; } - xcvtcnst(F,l->u.v.d,ty,d,(long double)d); + xcvtcnst(F,l->u.v.d,ty,d,(double)d); break; } case BAND+U: