llvm/llvm/test/Verifier/branch-prot-attrs.ll

; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s

define void @f() #0 {
  ret void
}

define void @g() #1 {
  ret void
}

define void @h() #2 {
  ret void
}

attributes #0 = {
; CHECK:  invalid value for 'sign-return-address' attribute: non-loaf
  "sign-return-address"="non-loaf"
; CHECK: invalid value for 'sign-return-address-key' attribute: bad-mkey
  "sign-return-address-key"="bad-mkey"
; CHECK:   invalid value for 'branch-target-enforcement' attribute: yes-please
  "branch-target-enforcement"="yes-please" }

attributes #1 = {
; CHECK:  invalid value for 'sign-return-address' attribute: All
  "sign-return-address"="All"
; CHECK: invalid value for 'sign-return-address-key' attribute: B_Key
  "sign-return-address-key"="B_Key"
; CHECK:   invalid value for 'branch-target-enforcement' attribute: True
  "branch-target-enforcement"="True"
; CHECK:   invalid value for 'branch-protection-pauth-lr' attribute: Yes
  "branch-protection-pauth-lr"="Yes"
; CHECK:   invalid value for 'guarded-control-stack' attribute: True
  "guarded-control-stack"="True"
  }

attributes #2 = {
; CHECK:  'sign-return-address-key' present without `sign-return-address`
  "sign-return-address-key"="a_key"
  }