# C backend: basic big ints, fix airPtrToInt, array references, pointer arithmetic UB with NULL, implement airPtrElemPtr/Val, fix redundant indirection/references with arrays · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/9bf1681990fe87a6b2e5fc644a89f1aece304579)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 9bf1681990fe87a6b2e5fc644a89f1aece304579

Requested commit: 9bf1681990fe87a6b2e5fc644a89f1aece304579

Commit: 9bf1681990fe87a6b2e5fc644a89f1aece304579

Tree: 45617b8500c741e8de902852c0495b5c20279dbf

Author: drew

Committer: Andrew Kelley

## Message

```
C backend: basic big ints, fix airPtrToInt, array references, pointer arithmetic UB with NULL, implement airPtrElemPtr/Val, fix redundant indirection/references with arrays

-add additional test cases that were found to be passing
-add basic int128 test cases which previously did not pass but weren't covered
-most test cases in cast.zig now pass
-i128/u128 or smaller int constants can now be rendered
-unsigned int constants are now always suffixed with 'u' to prevent random compile errors
-pointers with a val tag of 'zero' now just emit a 0 constant which coerces to the pointer type and fixes some warnings with ordered comparisons
-pointers with a val tag of 'one' are now casted back to the pointer type
-support pointers with a u64 val
-fix bug where rendering an array's type will emit more indirection than is needed
-render uint128_t/int128_t manually when needed
-implement ptr_add/sub AIR handlers manually so they manually cast to int types which avoids UB if the result or ptr operand is NULL
-implement airPtrElemVal/Ptr
-airAlloc for arrays will not allocate a ref as the local for the array is already a reference/pointer to the array itself
-fix airPtrToInt by casting to the int type

```

## Parents

- [952d865bd231834adad30905c469edc5a46d000a](https://git.cafe/gitcafe/zig/commit/952d865bd231834adad30905c469edc5a46d000a?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/9bf1681990fe87a6b2e5fc644a89f1aece304579?format=markdown)
