<div dir="ltr">Hi all,<br><br>I'm trying to prevent two things from happening:<br><br>1. Intrinsic memcpy calls of for example 16 bytes in the IR code being translated into movl commands in x86 assembly code, for example, this code:<br>
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %3, i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), i32 16, i32 1, i1 false)<br>translated into this x86 assembly<br> movl $6384738, 12(%ecx) # imm = 0x616C62<br>
movl $543452274, 8(%ecx) # imm = 0x20646C72<br> movl $1870078063, 4(%ecx) # imm = 0x6F77206F<br> movl $1819043176, (%ecx) # imm = 0x6C6C6568<br>this happens even if I run llc -O0. Any way to prevent it, instead calling memcpy in the assembly listing?<br>
<br>2. sizeof's being resolved to literals already at the llvm-gcc front end stage when emitting IR, no matter if I use -O0 flag Is there any way to prevent it?<br clear="all"><br><br><br>Thanks a lot in advance!<br><br>
Harel Cain<br>
</div>