]> Cypherpunks repositories - gostls13.git/commitdiff
floating point
authorKen Thompson <ken@golang.org>
Sun, 8 Jun 2008 23:11:14 +0000 (16:11 -0700)
committerKen Thompson <ken@golang.org>
Sun, 8 Jun 2008 23:11:14 +0000 (16:11 -0700)
SVN=121607

src/cmd/6g/cgen.c
src/cmd/gc/go.y

index 16d8fef7e704a2986330854f9926eda22b20884e..a103a0f58010ffb90446063e4055e2f51261411f 100644 (file)
@@ -14,7 +14,7 @@ cgen(Node *n, Node *res)
        Prog *p1, *p2, *p3;
 
        if(debug['g']) {
-               dump("\ncgen-l", res);
+               dump("\ncgen-res", res);
                dump("cgen-r", n);
        }
        if(n == N || n->type == T)
@@ -441,9 +441,9 @@ void
 bgen(Node *n, int true, Prog *to)
 {
        long lno;
-       int et, a, b;
+       int et, a;
        Node *nl, *nr, *r;
-       Node n1, n2, tmp;
+       Node n1, n2;
        Prog *p1, *p2;
 
        if(n == N)
@@ -560,48 +560,17 @@ bgen(Node *n, int true, Prog *to)
                }
                a = optoas(a, nr->type);
 
-               if(nr->addable) {
-                       regalloc(&n1, nl->type, N);
-                       cgen(nl, &n1);
-                       b = optoas(OCMP, nr->type);
-
-                       switch(b) {
-                       case ACMPQ:
-                               if(nr->op == OLITERAL)
-                               if(nr->val.vval >= (1LL<<32))
-                                       goto dolit;
-
-                       case AUCOMISS:
-                               if(nr->op == OLITERAL)
-                                       goto dolit;
-                               if(nr->op == ONAME)
-                                       goto dolit;
-                       }
-
-                       gins(b, &n1, nr);
-                       patch(gbranch(a, nr->type), to);
-                       regfree(&n1);
-                       break;
-
-               dolit:
-                       regalloc(&n2, nr->type, N);
-                       cgen(nr, &n2);
-                       gins(b, &n1, &n2);
-                       patch(gbranch(a, nr->type), to);
-                       regfree(&n2);
-                       regfree(&n1);
-                       break;
-               }
-
-               tempname(&tmp, nr->type);
-               cgen(nr, &tmp);
-
                regalloc(&n1, nl->type, N);
                cgen(nl, &n1);
 
-               gins(optoas(OCMP, nr->type), &n1, &tmp);
+               regalloc(&n2, nr->type, N);
+               cgen(nr, &n2);
+
+               gins(optoas(OCMP, nr->type), &n1, &n2);
                patch(gbranch(a, nr->type), to);
+
                regfree(&n1);
+               regfree(&n2);
                break;
        }
        goto ret;
index cfd4cc07fc110307da6d9624256d31c2680b544e..3d915a67aa95a645ebe5610a825b1f7497965ebf 100644 (file)
@@ -1058,16 +1058,32 @@ arg_type_list_r:
                $$ = nod(OLIST, $1, $3);
        }
 
+/*
+ * need semi in front NO
+ * need semi in back  NO
+ */
 Astmt:
        complex_stmt
+|      compound_stmt
 
+/*
+ * need semi in front NO
+ * need semi in back  YES
+ */
 Bstmt:
        semi_stmt
 |      common_dcl
 
+/*
+ * need semi in front YES
+ * need semi in back  YES
+ */
 Cstmt:
        simple_stmt
 
+/*
+ * statement list that need semi in back  NO
+ */
 Astmt_list_r:
        Astmt
 |      Astmt_list_r Astmt
@@ -1081,6 +1097,9 @@ Astmt_list_r:
                $$ = N;
        }
 
+/*
+ * statement list that need semi in back  YES
+ */
 Bstmt_list_r:
        Bstmt
 |      Cstmt