diff options
Diffstat (limited to 'llvm/test/Transforms/FunctionAttrs/int_sideeffect.ll')
-rw-r--r-- | llvm/test/Transforms/FunctionAttrs/int_sideeffect.ll | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/llvm/test/Transforms/FunctionAttrs/int_sideeffect.ll b/llvm/test/Transforms/FunctionAttrs/int_sideeffect.ll new file mode 100644 index 00000000000..24a145908e0 --- /dev/null +++ b/llvm/test/Transforms/FunctionAttrs/int_sideeffect.ll @@ -0,0 +1,29 @@ +; RUN: opt -S < %s -functionattrs | FileCheck %s +; RUN: opt -S < %s -passes=function-attrs | FileCheck %s + +; CHECK: Function Attrs +; CHECK-SAME: inaccessiblememonly +; CHECK-NEXT: declare void @llvm.sideeffect() +declare void @llvm.sideeffect() + +; Don't add readnone or similar attributes when an @llvm.sideeffect() intrinsic +; is present. + +; CHECK: Function Attrs +; CHECK-NOT: readnone +; CHECK: define void @test() +define void @test() { + call void @llvm.sideeffect() + ret void +} + +; CHECK: Function Attrs +; CHECK-NOT: readnone +; CHECK: define void @loop() +define void @loop() { + br label %loop + +loop: + call void @llvm.sideeffect() + br label %loop +} |