Issue 133048
Summary [CodeGen][ARM] Missed optimizated load store pair instruction combine
Labels backend:ARM, llvm:optimizations, missed-optimization
Assignees
Reporter hstk30-hw
    https://godbolt.org/z/db17KEWK1

```
typedef struct tagContext {
    unsigned long long int a;
    unsigned long long int b;
    unsigned long long int c;
} Context ;



void test(Context *context) {
    context->a = 0;
    context->b = 0;
    context->c = 0;
}
```

GCC output:

```
test:
        movs    r2, #0
        movs r3, #0
        strd    r2, [r0]
        strd    r2, [r0, #8]
 strd    r2, [r0, #16]
        bx      lr
```

llvm output:

```
test:
        mov     r1, #0
        str     r1, [r0]
 str     r1, [r0, #4]
        str     r1, [r0, #8]
        str     r1, [r0, #12]
        str     r1, [r0, #16]
        str     r1, [r0, #20]
 bx      lr
```

ARMLoadStoreOptimizer Pass have Pre/post register allocation
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to