Issue |
142086
|
Summary |
Mistake eliminating function call
|
Labels |
new issue
|
Assignees |
|
Reporter |
wzssyqa
|
```
#include <malloc.h>
#include <stdint.h>
#include <string.h>
struct xx {
int *base;
int *r1;
int *r2;
int *r3;
};
void f(struct xx *s) {
int prealloc_idx = 0;
int64_t prealloc_size = 0;
uint8_t **preallocs[64];
{
s->r1 = (void*)(intptr_t)prealloc_size;
preallocs[prealloc_idx++] = (uint8_t**)&(s->r1);
prealloc_size += sizeof(int) * 128;
}
{
s->r2 = (void*)(intptr_t)prealloc_size;
preallocs[prealloc_idx++] = (uint8_t**)&(s->r3);
prealloc_size += sizeof(int) * 128;
}
{
s->r3 = (void*)(intptr_t)prealloc_size;
preallocs[prealloc_idx++] = (uint8_t**)&(s->r3);
prealloc_size += sizeof(int) * 128;
}
s->base = malloc(prealloc_size);
while( prealloc_idx-- )
*preallocs[prealloc_idx] = (uint8_t*)((intptr_t)(*preallocs[prealloc_idx]) + (intptr_t)s->base);
memset(s->r1, -2, sizeof(int) * 128);
memset(s->r2, -2, sizeof(int) * 128);
memset(s->r3, -2, sizeof(int) * 128);
}
```
In this code, `memset` are eliminated.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs