brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 7e246c4 Raw
40 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes2; RUN: opt -S -o - -passes=function-attrs < %s | FileCheck %s3 4; Verify we remove argmemonly/inaccessiblememonly/inaccessiblemem_or_argmemonly5; function attributes when we derive readnone.6 7define ptr @given_argmem_infer_readnone(ptr %p) #0 {8; CHECK: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)9; CHECK-LABEL: @given_argmem_infer_readnone(10; CHECK-NEXT:  entry:11; CHECK-NEXT:    ret ptr [[P:%.*]]12;13entry:14  ret ptr %p15}16 17define ptr @given_inaccessible_infer_readnone(ptr %p) #1 {18; CHECK: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)19; CHECK-LABEL: @given_inaccessible_infer_readnone(20; CHECK-NEXT:  entry:21; CHECK-NEXT:    ret ptr [[P:%.*]]22;23entry:24  ret ptr %p25}26 27define ptr @given_inaccessible_or_argmem_infer_readnone(ptr %p) #2 {28; CHECK: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)29; CHECK-LABEL: @given_inaccessible_or_argmem_infer_readnone(30; CHECK-NEXT:  entry:31; CHECK-NEXT:    ret ptr [[P:%.*]]32;33entry:34  ret ptr %p35}36 37attributes #0 = { argmemonly }38attributes #1 = { inaccessiblememonly }39attributes #2 = { inaccessiblemem_or_argmemonly }40