; RUN: llc -mtriple=thumbv8.1m.main-arm-none-eabi < %s | FileCheck %s --check-prefix=BTI
; RUN: llc -mtriple=thumbv8.1m.main-arm-none-eabi -mattr=+no-bti-at-return-twice < %s | \
; RUN: FileCheck %s --check-prefix=NOBTI

; C source
; --------
; jmp_buf buf;
;
; extern void bar(int x);
;
; int foo(int x) {
;   if (setjmp(buf))
;     x = 0;
;   else
;     bar(x);
;   return x;
; }

@buf = global [20 x i64] zeroinitializer, align 8

define i32 @foo(i32 %x) {
; BTI-LABEL: foo:
; BTI:       bl setjmp
; BTI-NEXT:  bti
; NOBTI-LABEL: foo:
; NOBTI:       bl setjmp
; NOBTI-NOT:   bti

entry:
  %call = call i32 @setjmp(ptr @buf) #0
  %tobool.not = icmp eq i32 %call, 0
  br i1 %tobool.not, label %if.else, label %if.end

if.else:                                          ; preds = %entry
  call void @bar(i32 %x)
  br label %if.end

if.end:                                           ; preds = %entry, %if.else
  %x.addr.0 = phi i32 [ %x, %if.else ], [ 0, %entry ]
  ret i32 %x.addr.0
}

declare void @bar(i32)
declare i32 @setjmp(ptr) #0

attributes #0 = { returns_twice }

!llvm.module.flags = !{!0}

!0 = !{i32 8, !"branch-target-enforcement", i32 1}
