From 1a8f96c65f94227faa9747ef876a60f3c313c6f1 Mon Sep 17 00:00:00 2001 From: Mustafa Quraish Date: Wed, 2 Feb 2022 07:20:53 -0500 Subject: Type checking of expressions / functions! This is a bit of a chonky commit, but it adds in the basics of checking the types of expressions / function calls / return types. There's still a lot of work to be done, including: (1) Adding new core types, and casting between allowed types automatically (2) Picking the corrent output type based on input types (for instance float+int == float) (3) We need much better error reporting, the error messages are really vague and unhelpful as-is (4) We also need to work to ensure that a function with a return type actually returns (5) Possible re-factoring to make stuff less hacky when we have more types / structs / arrays / etc. --- src/utils.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/utils.c') diff --git a/src/utils.c b/src/utils.c index 2335981..939021a 100644 --- a/src/utils.c +++ b/src/utils.c @@ -27,4 +27,9 @@ void _die_location(char *file, int line, Location loc, const char *fmt, ...) } i64 i64max(i64 a, i64 b) { return a > b ? a : b; } -i64 i64min(i64 a, i64 b) { return a < b ? a : b; } \ No newline at end of file +i64 i64min(i64 a, i64 b) { return a < b ? a : b; } + +i64 align_up(i64 val, i64 align) +{ + return (val + align - 1) & ~(align - 1); +} \ No newline at end of file -- cgit v1.2.3