<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/101295>101295</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang][LoongArch] Too many instructions are generated for const-string copy with -mstrict-align
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
heiher
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
heiher
</td>
</tr>
</table>
<pre>
**Command line options:**
```bash
clang -target loongarch64 -O3 -S -o - align.c -mstrict-align
```
**Minimal reproduction:**
```c
#include <stdio.h>
extern void outs(char *str);
void test(void)
{
char msgbuf[64];
sprintf(msgbuf, "preemption imbalance ");
outs(msgbuf);
}
```
**LoongArch machine code:**
```asm
.text
.file "align.c"
.globl test # -- Begin function test
.p2align 5
.type test,@function
test: # @test
# %bb.0: # %entry
addi.d $sp, $sp, -80
st.d $ra, $sp, 72 # 8-byte Folded Spill
pcalau12i $a0, %pc_hi20(.L.str)
addi.d $a0, $a0, %pc_lo12(.L.str)
ld.b $a1, $a0, 21
ld.bu $a2, $a0, 20
slli.d $a1, $a1, 8
or $a1, $a1, $a2
st.h $a1, $sp, 28
ld.bu $a1, $a0, 17
ld.bu $a2, $a0, 16
ld.bu $a3, $a0, 18
ld.b $a4, $a0, 19
slli.d $a1, $a1, 8
or $a1, $a1, $a2
slli.d $a2, $a3, 16
slli.d $a3, $a4, 24
or $a2, $a3, $a2
or $a1, $a2, $a1
st.w $a1, $sp, 24
ld.bu $a1, $a0, 9
ld.bu $a2, $a0, 8
ld.bu $a3, $a0, 10
ld.bu $a4, $a0, 11
slli.d $a1, $a1, 8
or $a1, $a1, $a2
slli.d $a2, $a3, 16
slli.d $a3, $a4, 24
or $a2, $a3, $a2
or $a1, $a2, $a1
ld.bu $a2, $a0, 13
ld.bu $a3, $a0, 12
ld.bu $a4, $a0, 14
ld.bu $a5, $a0, 15
slli.d $a2, $a2, 8
or $a2, $a2, $a3
slli.d $a3, $a4, 16
slli.d $a4, $a5, 24
or $a3, $a4, $a3
or $a2, $a3, $a2
slli.d $a2, $a2, 32
or $a1, $a2, $a1
st.d $a1, $sp, 16
ld.bu $a1, $a0, 1
ld.bu $a2, $a0, 0
ld.bu $a3, $a0, 2
ld.bu $a4, $a0, 3
slli.d $a1, $a1, 8
or $a1, $a1, $a2
slli.d $a2, $a3, 16
slli.d $a3, $a4, 24
or $a2, $a3, $a2
or $a1, $a2, $a1
ld.bu $a2, $a0, 5
ld.bu $a3, $a0, 4
ld.bu $a4, $a0, 6
ld.bu $a0, $a0, 7
slli.d $a2, $a2, 8
or $a2, $a2, $a3
slli.d $a3, $a4, 16
slli.d $a0, $a0, 24
or $a0, $a0, $a3
or $a0, $a0, $a2
slli.d $a0, $a0, 32
or $a0, $a0, $a1
st.d $a0, $sp, 8
addi.d $a0, $sp, 8
bl %plt(outs)
ld.d $ra, $sp, 72 # 8-byte Folded Reload
addi.d $sp, $sp, 80
ret
.Lfunc_end0:
.size test, .Lfunc_end0-test
# -- End function
.type .L.str,@object # @.str
.section .rodata.str1.1,"aMS",@progbits,1
.L.str:
.asciz "preemption imbalance "
.size .L.str, 22
.ident "clang version 20.0.0git (https://github.com/llvm/llvm-project 84ad292f343e0b0b821fc18447a20c59530f9ec7)"
.section ".note.GNU-stack","",@progbits
.addrsig
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWM1u2zgXfRp6Q0igriRLWniRn-bbtN8A05l1QZGUxBlaFEg6bfr0A-rPkqKk7mKAARoEjkOee3nuuaR9KGqtrFshTii9RwCNkI0wCACljwd6cY02p2HsUGr-ckJwh-DuQZ_PtOVYyVZg3TmpW4viu2ESkUdEptcjGX5LapthiCna1jhw1NTCYaV1W1PDmmOCg99iHHzGgcYBpkrWbchwcLbOSOaCfmCTdLVSv_Yn2cozVdiIzmh-YZ7Z-8TYFB7LlqkLFxjFD9ZxqcMGxR-WMeKbE6bFz1pyrC_OIshZQw1GcGedQVCg-H6J74FOWIcg9-89YpjOZlzRZzjburxUKL0_Jih9nNNg2xnZugpBPiLgASOAzghx7lXH8lxSRVsm_PiSwsRwClyQyx5_qONH35Y7wxp8pqzxXWaai_eVpPY8VxU68c1d_6ukEogUCGDsqyc7z9ZKlwqRwkuFEcQ4CPC9qGWLq0vbt3BQcQ7oYNwNRbpY8aUTYxIEDyghU_AA6cfjuz4_SsgioR-AtCxD4ud_8DOiRevMy7w25VyGvC8wsd3QpPFNkM_qFtZNIENXoAz6vHlQvjiBn7TiguPPnVRqju0YVfQSgRwSUDIkSDv2pZFAEOThx3DchXu0poBVpNIR7EYqHpZjXLSKg2iFuYwgWIMWJSt1pTCn6t_kM0ibXcCQeCFes4EN4kG-S2nNO8pu4B0dd0HxGpTvqZSsMcW_IcAy00w83hBfoWbmPT1IXi-4zrNe8DUruNJbtOXrfluSG9pS3NCV_fZumkJ2QZuuRL9MV97Z4_EtcsItcu43OF2D0h8oBW9oDq-qi29R8y3NZ-rpW5qv86wXvKkx79QX__yh2m7O4VC98Qm1-ay7YRvsn5f1LrhlE7zRlF_qSKU3aLl_VtZa7vd2_b2d_TeO05rUnt5bu7F7nF6D3tgFa-DecXqdavc4kdVxyt-3SltQb1K9c1Le0Q_-evUN9hPu7nehNOW3OMiFgTRi9KzhR29uv4iWe8969cBWfl94YLyABVfDO1nsDy3Ha4-8sNGTJ_RGWpd_CeYm59yPX1cUY3wRGs2po346Cv1J8m7_0-f-WuKzdEbXpfSaPURTFX2uZQHUMvl9uCm8ecnZVjtTxdfJCSK5aN2Qb7h3PgtjfUogIQlJLX1ZeeNcN9xfnxA81dI1lzJk-ozgSann6U_QGd0LkSeUQwFVnMSClKTMIapYlCdJRoGwtEhjUhWCZX53rPjOWiGAsNVOhP_7_5-BdZT9PcrkX7d6XcXh3FhZb65dB36KeREX9CBOUQaQkCI9wqE5MZJVSX4kVQmkqvI043meRVFSHdOCxCw6yBMQSEgWRyQjRwJhzvMyIcc4ZiIiQClKiDhTqUJffqhNfZDWXsQpIhEU6UHRUig7Pjjo5R2fG5hTr1d5qS1KiJLW2WsKJ53qnzYMEekjSu_n6yZKH_EfWuMzbV-wbK0zwx3eYmoErkUrDHWC40obzHRrXWCdkW2Nme5e8Ffpms0Tg8PFqNPP9RfBU1-mRfA0Vvp8gn8CAAD__wOSTwQ">