This example
```
#include <stdio.h>
#include <stdint.h>
static inline char *tag(char *ptr) {
return (char*)(((uintptr_t)ptr & 0xffffffffffff) | (69L << 56));
}
int main() {
char v = 'x';
printf("ptr %p val %c\n", &v, *(&v));
printf("ptr %p\n", tag(&v));
printf("val %c\n", *tag(&v));
return 0;
}
```
no longer segfaults on the last dereference.
UPD: also, I got HWASAN working :) [my current llvm80 patches are here](https://github.com/myfreeweb/freebsd-ports-dank/commit/fe03024636f0a2b82325ce6f91f96c1bfbdd9fb7) (I'll try to keep the link here up to date)