; Test that HWASan remove writeonly and memory(*) attributes from instrumented functions.
; RUN: opt -S -passes=hwasan %s | FileCheck %s
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-android30"
; CHECK: define dso_local void @test_writeonly(ptr nocapture noundef %p) local_unnamed_addr #0
define dso_local void @test_writeonly(ptr nocapture noundef writeonly %p) local_unnamed_addr #0 {
entry:
store i32 42, ptr %p, align 4
ret void
}
; CHECK: define dso_local void @test_readonly(ptr nocapture noundef readonly %p) local_unnamed_addr #0
define dso_local void @test_readonly(ptr nocapture noundef readonly %p) local_unnamed_addr #1 {
entry:
store i32 42, ptr %p, align 4
ret void
}
; CHECK: attributes #0 = { nobuiltin sanitize_hwaddress uwtable }
attributes #0 = { sanitize_hwaddress memory(argmem: write) uwtable }
attributes #1 = { sanitize_hwaddress memory(argmem: read) uwtable }