36 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=msan < %s | FileCheck %s3 4target triple = "x86_64-unknown-linux-gnu"5 6define void @test_memcpy(ptr %p, ptr byval(i32) %p2) sanitize_memory {7; CHECK-LABEL: @test_memcpy(8; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P2:%.*]] to i649; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 8796093022208010; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr11; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP3]], ptr align 4 getelementptr (i8, ptr @__msan_param_tls, i64 8), i64 4, i1 false)12; CHECK-NEXT: call void @llvm.donothing()13; CHECK-NEXT: [[TMP4:%.*]] = call ptr @__msan_memcpy(ptr [[P:%.*]], ptr [[P2]], i64 4)14; CHECK-NEXT: ret void15;16 call void @llvm.memcpy.p0.p0.i64(ptr %p, ptr %p2, i64 4, i1 false)17 ret void18}19 20define void @test_memmove(ptr %p, ptr byval(i32) %p2) sanitize_memory {21; CHECK-LABEL: @test_memmove(22; CHECK-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[P2:%.*]] to i6423; CHECK-NEXT: [[TMP2:%.*]] = xor i64 [[TMP1]], 8796093022208024; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr25; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP3]], ptr align 4 getelementptr (i8, ptr @__msan_param_tls, i64 8), i64 4, i1 false)26; CHECK-NEXT: call void @llvm.donothing()27; CHECK-NEXT: [[TMP4:%.*]] = call ptr @__msan_memmove(ptr [[P:%.*]], ptr [[P2]], i64 4)28; CHECK-NEXT: ret void29;30 call void @llvm.memmove.p0.p0.i64(ptr %p, ptr %p2, i64 4, i1 false)31 ret void32}33 34declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1)35declare void @llvm.memmove.p0.p0.i64(ptr, ptr, i64, i1)36