Browse Source

Remove print(ln) and fix swizzle

gingerBill 9 years ago
parent
commit
ddb15e73c0
5 changed files with 37 additions and 61 deletions
  1. 32 32
      examples/main.ll
  2. 0 6
      src/checker/checker.cpp
  3. 0 12
      src/checker/expr.cpp
  4. 5 2
      src/codegen/print_llvm.cpp
  5. 0 9
      src/codegen/ssa.cpp

+ 32 - 32
examples/main.ll

@@ -1031,38 +1031,6 @@ for.done.-.8:
 	ret void
 }
 
-define void @print_pointer(%.rawptr %p) alwaysinline {
-entry.-.0:
-	%0 = alloca %.rawptr, align 8 ; p
-	store %.rawptr zeroinitializer, %.rawptr* %0
-	store %.rawptr %p, %.rawptr* %0
-	%1 = load %.rawptr, %.rawptr* %0, align 8
-	%2 = ptrtoint %.rawptr %1 to i64
-	call void @print__uint(i64 %2, i64 16, i64 0, i8 32)
-	ret void
-}
-
-define void @print_f32(float %f) alwaysinline {
-entry.-.0:
-	%0 = alloca float, align 4 ; f
-	store float zeroinitializer, float* %0
-	store float %f, float* %0
-	%1 = load float, float* %0, align 4
-	%2 = fpext float %1 to double
-	call void @print__f64(double %2, i64 7)
-	ret void
-}
-
-define void @print_f64(double %f) alwaysinline {
-entry.-.0:
-	%0 = alloca double, align 8 ; f
-	store double zeroinitializer, double* %0
-	store double %f, double* %0
-	%1 = load double, double* %0, align 8
-	call void @print__f64(double %1, i64 10)
-	ret void
-}
-
 define void @print_bool(i1 %b) {
 entry.-.0:
 	%0 = alloca i1, align 1 ; b
@@ -1099,6 +1067,38 @@ if.done.-.3:
 	ret void
 }
 
+define void @print_pointer(%.rawptr %p) alwaysinline {
+entry.-.0:
+	%0 = alloca %.rawptr, align 8 ; p
+	store %.rawptr zeroinitializer, %.rawptr* %0
+	store %.rawptr %p, %.rawptr* %0
+	%1 = load %.rawptr, %.rawptr* %0, align 8
+	%2 = ptrtoint %.rawptr %1 to i64
+	call void @print__uint(i64 %2, i64 16, i64 0, i8 32)
+	ret void
+}
+
+define void @print_f32(float %f) alwaysinline {
+entry.-.0:
+	%0 = alloca float, align 4 ; f
+	store float zeroinitializer, float* %0
+	store float %f, float* %0
+	%1 = load float, float* %0, align 4
+	%2 = fpext float %1 to double
+	call void @print__f64(double %2, i64 7)
+	ret void
+}
+
+define void @print_f64(double %f) alwaysinline {
+entry.-.0:
+	%0 = alloca double, align 8 ; f
+	store double zeroinitializer, double* %0
+	store double %f, double* %0
+	%1 = load double, double* %0, align 8
+	call void @print__f64(double %1, i64 10)
+	ret void
+}
+
 define void @print__f64(double %f, i64 %decimal_places) {
 entry.-.0:
 	%0 = alloca double, align 8 ; f

+ 0 - 6
src/checker/checker.cpp

@@ -124,8 +124,6 @@ enum BuiltinProcId {
 	BuiltinProc_copy,
 	BuiltinProc_append,
 	BuiltinProc_swizzle,
-	BuiltinProc_print,
-	BuiltinProc_println,
 
 	BuiltinProc_Count,
 };
@@ -152,10 +150,6 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_Count] = {
 	{STR_LIT("append"),           2, false, Expression_Expression},
 
 	{STR_LIT("swizzle"),          1, true,  Expression_Expression},
-
-	{STR_LIT("print"),            1, true,  Expression_Statement},
-	{STR_LIT("println"),          1, true,  Expression_Statement},
-
 };
 
 struct CheckerContext {

+ 0 - 12
src/checker/expr.cpp

@@ -1470,7 +1470,6 @@ b32 check_builtin_procedure(Checker *c, Operand *operand, AstNode *call, i32 id)
 
 	case BuiltinProc_static_assert:
 		// static_assert :: proc(cond: bool)
-		// TODO(bill): Should `static_assert` and `assert` be unified?
 
 		if (operand->mode != Addressing_Constant ||
 		    !is_type_boolean(operand->type)) {
@@ -1663,17 +1662,6 @@ b32 check_builtin_procedure(Checker *c, Operand *operand, AstNode *call, i32 id)
 		Type *elem_type = vector_type->vector.elem;
 		operand->type = make_type_vector(c->allocator, elem_type, arg_count);
 		operand->mode = Addressing_Value;
-	}
-
-	case BuiltinProc_print:
-	case BuiltinProc_println: {
-		for (AstNode *arg = ce->arg_list; arg != NULL; arg = arg->next) {
-			// TOOD(bill): `check_assignment` doesn't allow tuples at the moment, should it?
-			// Or should we destruct the tuple and use each elem?
-			check_assignment(c, operand, NULL, make_string("argument"));
-			if (operand->mode == Addressing_Invalid)
-				return false;
-		}
 	} break;
 	}
 

+ 5 - 2
src/codegen/print_llvm.cpp

@@ -641,10 +641,13 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) {
 		ssa_fprintf(f, " ");
 		ssa_print_value(f, m, sv->vector, vt);
 		ssa_fprintf(f, ", ");
+
 		ssa_print_type(f, m->sizes, vt);
-		ssa_fprintf(f, " undef,");
+		ssa_fprintf(f, " ");
+		ssa_print_value(f, m, sv->vector, vt);
+		ssa_fprintf(f, ", ");
 
-		ssa_fprintf(f, " <%td x i32> <", sv->index_count);
+		ssa_fprintf(f, "<%td x i32> <", sv->index_count);
 		for (isize i = 0; i < sv->index_count; i++) {
 			if (i > 0) {
 				ssa_fprintf(f, ", ");

+ 0 - 9
src/codegen/ssa.cpp

@@ -1818,15 +1818,6 @@ ssaValue *ssa_build_single_expr(ssaProcedure *proc, AstNode *expr, TypeAndValue
 					return ssa_emit(proc, ssa_make_instr_shuffle_vector(proc, vector, indices, index_count));
 
 				} break;
-
-				case BuiltinProc_print: {
-					// print :: proc(...)
-					GB_PANIC("TODO(bill): BuiltinProc_print");
-				} break;
-				case BuiltinProc_println: {
-					// println :: proc(...)
-					GB_PANIC("TODO(bill): BuiltinProc_println");
-				} break;
 				}
 			}
 		}