; RUN: opt < %s -function-attrs -S | FileCheck %s

; TEST 1
; CHECK: Function Attrs: mustprogress nofree norecurse nosync nounwind readnone
; CHECK-NEXT: define i32 @foo1()
define i32 @foo1() {
  ret i32 1
}

; TEST 2
; CHECK: Function Attrs: nofree nosync nounwind readnone
; CHECK-NEXT: define i32 @scc1_foo()
define i32 @scc1_foo() {
  %1 = call i32 @scc1_bar()
  ret i32 1
}


; TEST 3
; CHECK: Function Attrs: nofree nosync nounwind readnone
; CHECK-NEXT: define i32 @scc1_bar()
define i32 @scc1_bar() {
  %1 = call i32 @scc1_foo()
  ret i32 1
}

; CHECK: declare i32 @non_nounwind()
declare i32 @non_nounwind()

; TEST 4
; CHECK: define void @call_non_nounwind() {
define void @call_non_nounwind(){
    tail call i32 @non_nounwind()
    ret void
}

; TEST 5 - throw
; int maybe_throw(bool canThrow) {
;   if (canThrow)
;     throw;
;   else
;     return -1;
; }

; CHECK: define i32 @maybe_throw(i1 zeroext %0)
define i32 @maybe_throw(i1 zeroext %0) {
  br i1 %0, label %2, label %3

2:                                                ; preds = %1
  tail call void @__cxa_rethrow() #1
  unreachable

3:                                                ; preds = %1
  ret i32 -1
}

declare void @__cxa_rethrow()

; TEST 6 - catch
; int catch_thing() {
;   try {
;       int a = doThing(true);
;   }
;   catch(...) { return -1; }
;   return 1;
; }

; CHECK: define i32 @catch_thing()
define i32 @catch_thing() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
  invoke void @__cxa_rethrow() #1
          to label %1 unwind label %2

1:                                                ; preds = %0
  unreachable

2:                                                ; preds = %0
  %3 = landingpad { i8*, i32 }
          catch i8* null
  %4 = extractvalue { i8*, i32 } %3, 0
  %5 = tail call i8* @__cxa_begin_catch(i8* %4) #2
  tail call void @__cxa_end_catch()
  ret i32 -1
}

define i32 @catch_thing_user() {
  %catch_thing_call = call i32 @catch_thing()
  ret i32 %catch_thing_call
}


declare i32 @__gxx_personality_v0(...)

declare i8* @__cxa_begin_catch(i8*)

declare void @__cxa_end_catch()
