diff --git a/lib/Target/ARM/ARMISelDAGToDAG.cpp b/lib/Target/ARM/ARMISelDAGToDAG.cpp index 7f5e35a9937..cf02b8b3e4a 100644 --- a/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -75,7 +75,9 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM) setOperationAction(ISD::SELECT_CC, MVT::i32, Custom); + setOperationAction(ISD::MEMMOVE, MVT::Other, Expand); setOperationAction(ISD::MEMSET, MVT::Other, Expand); + setOperationAction(ISD::MEMCPY, MVT::Other, Expand); setOperationAction(ISD::BR_JT, MVT::Other, Expand); setOperationAction(ISD::BRIND, MVT::Other, Expand); diff --git a/test/CodeGen/ARM/memfunc.ll b/test/CodeGen/ARM/memfunc.ll new file mode 100644 index 00000000000..1b410103e21 --- /dev/null +++ b/test/CodeGen/ARM/memfunc.ll @@ -0,0 +1,13 @@ +; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm + +void %f() { +entry: + call void %llvm.memmove.i32( sbyte* null, sbyte* null, uint 64, uint 0 ) + call void %llvm.memcpy.i32( sbyte* null, sbyte* null, uint 64, uint 0 ) + call void %llvm.memset.i32( sbyte* null, ubyte 64, uint 0, uint 0 ) + unreachable +} + +declare void %llvm.memmove.i32(sbyte*, sbyte*, uint, uint) +declare void %llvm.memcpy.i32(sbyte*, sbyte*, uint, uint) +declare void %llvm.memset.i32(sbyte*, ubyte, uint, uint)