1 ; RUN: opt < %s -inline -S | not grep {tail call void @llvm.memcpy.i32} 2 ; PR3550 3 4 define internal void @foo(i32* %p, i32* %q) { 5 %pp = bitcast i32* %p to i8* 6 %qq = bitcast i32* %q to i8* 7 tail call void @llvm.memcpy.p0i8.p0i8.i32(i8* %pp, i8* %qq, i32 4, i32 1, i1 false) 8 ret void 9 } 10 11 declare void @llvm.memcpy.i32(i8* nocapture, i8* nocapture, i32, i32) nounwind 12 13 define i32 @main() { 14 %a = alloca i32 ; <i32*> [#uses=3] 15 %b = alloca i32 ; <i32*> [#uses=2] 16 store i32 1, i32* %a, align 4 17 store i32 0, i32* %b, align 4 18 invoke void @foo(i32* %a, i32* %b) 19 to label %invcont unwind label %lpad 20 21 invcont: 22 %retval = load i32* %a, align 4 23 ret i32 %retval 24 25 lpad: 26 %eh_ptr = call i8* @llvm.eh.exception() 27 %eh_select = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null) 28 unreachable 29 } 30 31 declare i8* @llvm.eh.exception() nounwind readonly 32 33 declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind 34 35 declare i32 @__gxx_personality_v0(...) 36 37 declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind 38