1; RUN: opt -S < %s -function-attrs | FileCheck %s
2; RUN: opt -S < %s -passes=function-attrs | FileCheck %s
3
4; CHECK: Function Attrs
5; CHECK-SAME: inaccessiblememonly
6; CHECK-NEXT: declare void @llvm.sideeffect()
7declare void @llvm.sideeffect()
8
9; Don't add readnone or similar attributes when an @llvm.sideeffect() intrinsic
10; is present.
11
12; CHECK: Function Attrs
13; CHECK-NOT: readnone
14; CHECK: define void @test()
15define void @test() {
16    call void @llvm.sideeffect()
17    ret void
18}
19
20; CHECK: Function Attrs
21; CHECK-NOT: readnone
22; CHECK: define void @loop()
23define void @loop() {
24    br label %loop
25
26loop:
27    call void @llvm.sideeffect()
28    br label %loop
29}
30