diff options
| author | Mustafa Quraish <[email protected]> | 2022-02-02 07:20:53 -0500 |
|---|---|---|
| committer | Mustafa Quraish <[email protected]> | 2022-02-02 07:37:39 -0500 |
| commit | 1a8f96c65f94227faa9747ef876a60f3c313c6f1 (patch) | |
| tree | d80a396958ff2fc752b620cc5314e27e40b58ecb /src/utils.c | |
| parent | Use `type*` instead of `type&` to denote a pointer type (for now) (diff) | |
| download | cup-1a8f96c65f94227faa9747ef876a60f3c313c6f1.tar.xz cup-1a8f96c65f94227faa9747ef876a60f3c313c6f1.zip | |
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.
Diffstat (limited to 'src/utils.c')
| -rw-r--r-- | src/utils.c | 7 |
1 files changed, 6 insertions, 1 deletions
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 |