diff options
author | Hans Wennborg <hans@hanshq.net> | 2014-03-26 16:30:54 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2014-03-26 16:30:54 +0000 |
commit | d683a22dd21424416cb261c2de22520c84977c0f (patch) | |
tree | 19baee28d83ab5c20416fb89af25b0041e3dd208 /clang/test/Analysis/malloc-three-arg.c | |
parent | a6c8b5121231aee00e229b4247fb8f79141a0aa5 (diff) | |
download | bcm5719-llvm-d683a22dd21424416cb261c2de22520c84977c0f.tar.gz bcm5719-llvm-d683a22dd21424416cb261c2de22520c84977c0f.zip |
Revert "X86 memcpy lowering: use "rep movs" even when esi is used as base pointer" (r204174)
> For functions where esi is used as base pointer, we would previously fall ba
> from lowering memcpy with "rep movs" because that clobbers esi.
>
> With this patch, we just store esi in another physical register, and restore
> it afterwards. This adds a little bit of register preassure, but the more
> efficient memcpy should be worth it.
>
> Differential Revision: http://llvm-reviews.chandlerc.com/D2968
This didn't work. I was ending up with code like this:
lea edi,[esi+38h]
mov ecx,0Fh
mov edx,esi
mov esi,ebx
rep movs dword ptr es:[edi],dword ptr [esi]
lea ecx,[esi+74h] <-- Ooops, we're now using esi before restoring it from edx.
add ebx,3Ch
mov esi,edx
I guess if we want to do this we need stronger glue or something, or doing the expansion
much later.
llvm-svn: 204829
Diffstat (limited to 'clang/test/Analysis/malloc-three-arg.c')
0 files changed, 0 insertions, 0 deletions