Use the llvm-upgrade program to upgrade llvm assembly.
[oota-llvm.git] / test / Transforms / InstCombine / memmove.ll
1 ; This test makes sure that memmove instructions are properly eliminated.
2 ;
3
4 ; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep 'call void %llvm.memmove'
5
6 %S = internal constant [33 x sbyte] c"panic: restorelist inconsistency\00"
7
8 implementation
9
10 declare void %llvm.memmove(sbyte*, sbyte*, uint, uint)
11
12 void %test1(sbyte* %A, sbyte* %B, uint %N) {
13         ;; 0 bytes -> noop.
14         call void %llvm.memmove(sbyte* %A, sbyte* %B, uint 0, uint 1)
15         ret void
16 }
17
18 void %test2(sbyte *%A, uint %N) {
19         ;; dest can't alias source since we can't write to source!
20         call void %llvm.memmove(sbyte* %A, sbyte* getelementptr ([33 x sbyte]* %S, int 0, int 0), 
21                                 uint %N, uint 1)
22         ret void
23 }