[LIR] Add support for structs and hand unrolled loops
Now LIR can turn following codes into memset:
typedef struct foo {
int a; int b;
} foo_t;
void bar(foo_t *f, unsigned n) {
for (unsigned i = 0; i < n; ++i) { f[i].a = 0; f[i].b = 0; }
}
void test(foo_t *f, unsigned n) {
for (unsigned i = 0; i < n; i += 2) { f[i] = 0; f[i+1] = 0; }
}