SSA failed on alias

Hi guys, I’m new to LLVM and trying demo with the following C code:

int main()
{
int a = 65535;
*(1+(char *)a) = 0;
return a;
}

unfortunately it generates the wrong IR:

define i32 @main() nounwind {
entry:
store i8 0, i8* inttoptr (i64 65536 to i8*), align 65536
ret i32 65535
}

seems SSA not applied on memory but incorrectly ‘acrossed’ by scalar values.

Is it a bug?

Did you mean (char*)&a ?