Browse Source

Minor fix for parapoly matrix types

gingerBill 3 years ago
parent
commit
e6f725dc2c
3 changed files with 5 additions and 3 deletions
  1. 0 1
      src/check_builtin.cpp
  2. 1 2
      src/llvm_backend_proc.cpp
  3. 4 0
      src/types.cpp

+ 0 - 1
src/check_builtin.cpp

@@ -2168,7 +2168,6 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32
 		break;
 	}
 	
-
 	case BuiltinProc_simd_vector: {
 		Operand x = {};
 		Operand y = {};

+ 1 - 2
src/llvm_backend_proc.cpp

@@ -1313,8 +1313,7 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv,
 			lbValue m = lb_build_expr(p, ce->args[0]);
 			return lb_emit_matrix_flatten(p, m, tv.type);
 		}
-
-
+		
 	// "Intrinsics"
 
 	case BuiltinProc_alloca:

+ 4 - 0
src/types.cpp

@@ -1334,12 +1334,16 @@ i64 matrix_indices_to_offset(Type *t, i64 row_index, i64 column_index) {
 }
 
 bool is_type_valid_for_matrix_elems(Type *t) {
+	t = base_type(t);
 	if (is_type_integer(t)) {
 		return true;
 	} else if (is_type_float(t)) {
 		return true;
 	} else if (is_type_complex(t)) {
 		return true;
+	} 
+	if (t->kind == Type_Generic) {
+		return true;
 	}
 	return false;
 }