commit e023b70a083338808f7e1e8e015df581c3a72823
Author:     Roberto E. Vargas Caballero <[email protected]>
AuthorDate: Thu Jan 7 21:22:52 2016 +0100
Commit:     Roberto E. Vargas Caballero <[email protected]>
CommitDate: Fri Jan 8 10:49:29 2016 +0100

    Convert pcompare() to use new fields of type

diff --git a/cc1/expr.c b/cc1/expr.c
index 88a43c4..5251fd4 100644
--- a/cc1/expr.c
+++ b/cc1/expr.c
@@ -336,18 +336,21 @@ arithmetic(char op, Node *lp, Node *rp)
 static Node *
 pcompare(char op, Node *lp, Node *rp)
 {
-       switch (BTYPE(rp)) {
-       case INT:
-               if (cmpnode(rp, 0))
-                       rp = convert(rp, pvoidtype, 1);
-               break;
-       case PTR:
-               if (lp->type != rp->type)
-                       warn("comparision between different pointer types");
-               break;
-       default:
-               errorp("incompatibles type in comparision");
+       Node *np;
+       int err = 0;
+
+       if (rp->type->integer) {
+               if (!cmpnode(rp, 0))
+                       err = 1;
+               rp = convert(rp, pvoidtype, 1);
+       } else if (rp->type->op == PTR) {
+               if (!eqtype(lp->type, rp->type))
+                       err = 1;
+       } else {
+               err = 1;
        }
+       if (err)
+               errorp("incompatibles type in comparision");
        return simplify(op, inttype, lp, rp);
 }
 

Reply via email to