xref: /llvm-project/llvm/test/Instrumentation/MemorySanitizer/opaque-ptr.ll (revision 21c3df4b858476bbc9b2b5af96cfef41f5715715)
10adadfa6SNikita Popov; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
20adadfa6SNikita Popov; RUN: opt -S -passes=msan < %s | FileCheck %s
30adadfa6SNikita Popov
40adadfa6SNikita Popovtarget triple = "x86_64-unknown-linux-gnu"
50adadfa6SNikita Popov
60adadfa6SNikita Popovdefine void @test_memcpy(ptr %p, ptr byval(i32) %p2) sanitize_memory {
70adadfa6SNikita Popov; CHECK-LABEL: @test_memcpy(
80adadfa6SNikita Popov; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P2:%.*]] to i64
90adadfa6SNikita Popov; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
100adadfa6SNikita Popov; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
110adadfa6SNikita Popov; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP3]], ptr align 4 inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 8) to ptr), i64 4, i1 false)
120adadfa6SNikita Popov; CHECK-NEXT:    call void @llvm.donothing()
130adadfa6SNikita Popov; CHECK-NEXT:    [[TMP4:%.*]] = call ptr @__msan_memcpy(ptr [[P:%.*]], ptr [[P2]], i64 4)
140adadfa6SNikita Popov; CHECK-NEXT:    ret void
150adadfa6SNikita Popov;
16*21c3df4bSMatt Arsenault  call void @llvm.memcpy.p0.p0.i64(ptr %p, ptr %p2, i64 4, i1 false)
170adadfa6SNikita Popov  ret void
180adadfa6SNikita Popov}
190adadfa6SNikita Popov
200adadfa6SNikita Popovdefine void @test_memmove(ptr %p, ptr byval(i32) %p2) sanitize_memory {
210adadfa6SNikita Popov; CHECK-LABEL: @test_memmove(
220adadfa6SNikita Popov; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P2:%.*]] to i64
230adadfa6SNikita Popov; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
240adadfa6SNikita Popov; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
250adadfa6SNikita Popov; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[TMP3]], ptr align 4 inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 8) to ptr), i64 4, i1 false)
260adadfa6SNikita Popov; CHECK-NEXT:    call void @llvm.donothing()
270adadfa6SNikita Popov; CHECK-NEXT:    [[TMP4:%.*]] = call ptr @__msan_memmove(ptr [[P:%.*]], ptr [[P2]], i64 4)
280adadfa6SNikita Popov; CHECK-NEXT:    ret void
290adadfa6SNikita Popov;
30*21c3df4bSMatt Arsenault  call void @llvm.memmove.p0.p0.i64(ptr %p, ptr %p2, i64 4, i1 false)
310adadfa6SNikita Popov  ret void
320adadfa6SNikita Popov}
330adadfa6SNikita Popov
34*21c3df4bSMatt Arsenaultdeclare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1)
35*21c3df4bSMatt Arsenaultdeclare void @llvm.memmove.p0.p0.i64(ptr, ptr, i64, i1)
36