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

Reply via email to