- val->type = val->etype = newLink (SPECIFIER);
- SPEC_NOUN (val->type) = (IS_FLOAT (lval->etype) ||
- IS_FLOAT (rval->etype) ? V_FLOAT : V_INT);
- SPEC_SCLS (val->type) = S_LITERAL; /* will remain literal */
- SPEC_LONG (val->type) = (SPEC_LONG (lval->etype) | SPEC_LONG (rval->etype));
- /* both signed char and unsigned char are promoted to signed int */
- if (IS_CHAR (lval->etype))
- {
- SPEC_USIGN (lval->etype) = 0;
- SPEC_NOUN (lval->etype) = V_INT;
- }
- if (IS_CHAR (rval->etype))
- {
- SPEC_USIGN (rval->etype) = 0;
- SPEC_NOUN (rval->etype) = V_INT;
- }
- SPEC_USIGN (val->type) = (SPEC_USIGN (lval->etype) | SPEC_USIGN (rval->etype));
+ val->type = val->etype = computeType (lval->etype,
+ rval->etype,
+ RESULT_TYPE_INT,
+ '*');
+ SPEC_SCLS (val->etype) = S_LITERAL; /* will remain literal */
+