prevent a voluntary crash and generate better code
authorceriel <none@none>
Mon, 11 Jan 1988 14:06:20 +0000 (14:06 +0000)
committerceriel <none@none>
Mon, 11 Jan 1988 14:06:20 +0000 (14:06 +0000)
lang/cem/cemcom/conversion.c
lang/cem/cemcom/declar.g

index 7013771..614ebfe 100644 (file)
@@ -109,13 +109,15 @@ conversion(from_type, to_type)
            ) {
                extern long full_mask[];
 
-               C_loc((arith) full_mask[(int)(to_type->tp_size)]);
-               C_and(word_size);
                if (to_fund == T_SIGNED) {
                        C_loc(to_type->tp_size);
                        C_loc(word_size);
                        C_cii();
                }
+               else {
+                       C_loc((arith) full_mask[(int)(to_type->tp_size)]);
+                       C_and(word_size);
+               }
        }
 }
 
index e233200..2288d61 100644 (file)
@@ -177,6 +177,7 @@ initializer(struct idf *idf; int sc;)
 :
        {       if (idf->id_def->df_type->tp_fund == FUNCTION)  {
                        error("illegal initialization of function");
+                       idf->id_def->df_type->tp_fund = ERRONEOUS;
                }
        }
        [