small potential bugfix
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 20 Jul 2020 02:54:32 +0000 (21:54 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 20 Jul 2020 02:54:32 +0000 (21:54 -0500)
onyx
progs/arrays.onyx
src/onyxwasm.c

diff --git a/onyx b/onyx
index 69bdc1a0b091e26b8e1169024eacfb27ff0a1087..c3e5c62f1665c043594d570501cc361a9c825401 100755 (executable)
Binary files a/onyx and b/onyx differ
index 6c84977511d76ecfcf3992f8d48971d158587533..d121c0f5766eb942abb90eb7361fa5818d13b381 100644 (file)
@@ -100,8 +100,6 @@ alloc_2darr :: proc (rows: u32, cols: u32) -> ^^i32 {
     return arr;
 }
 
-
-
 multi_arr_test :: proc #export "main" {
     arrs := alloc_2darr(10, 10);
 
index cefd6e721bd8ddde91c1533c2c99e1f22b869676..b5a361d2df1708350f069881adbe699286b42611 100644 (file)
@@ -890,7 +890,10 @@ COMPILE_FUNC(cast, AstUnaryOp* cast) {
     Type* to = cast->type;
 
     i32 fromidx = -1, toidx = -1;
-    if (from->Basic.flags & Basic_Flag_Integer) {
+    if (from->Basic.flags & Basic_Flag_Pointer) {
+        fromidx = 8;
+    }
+    else if (from->Basic.flags & Basic_Flag_Integer) {
         b32 unsign = (from->Basic.flags & Basic_Flag_Unsigned) != 0;
 
         if      (from->Basic.size == 1 && !unsign) fromidx = 0;
@@ -906,11 +909,11 @@ COMPILE_FUNC(cast, AstUnaryOp* cast) {
         if      (from->Basic.size == 4) fromidx = 6;
         else if (from->Basic.size == 8) fromidx = 7;
     }
-    else if (from->Basic.flags & Basic_Flag_Pointer) {
-        fromidx = 8;
-    }
 
-    if (to->Basic.flags & Basic_Flag_Integer) {
+    if (to->Basic.flags & Basic_Flag_Pointer) {
+        toidx = 8;
+    }
+    else if (to->Basic.flags & Basic_Flag_Integer) {
         b32 unsign = (to->Basic.flags & Basic_Flag_Unsigned) != 0;
 
         if      (to->Basic.size == 1 && !unsign) toidx = 0;
@@ -926,9 +929,6 @@ COMPILE_FUNC(cast, AstUnaryOp* cast) {
         if      (to->Basic.size == 4) toidx = 6;
         else if (to->Basic.size == 8) toidx = 7;
     }
-    else if (to->Basic.flags & Basic_Flag_Pointer) {
-        toidx = 8;
-    }
 
     if (fromidx != -1 && toidx != -1) {
         WasmInstructionType cast_op = cast_map[fromidx][toidx];