Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -mtriple=x86_64-pc-windows-msvc -code-model=large -o - < %s | FileCheck %s
      2 
      3 declare i32 @__CxxFrameHandler3(...)
      4 
      5 declare void @bar()
      6 
      7 define void @foo() personality i32 (...)* @__CxxFrameHandler3 {
      8 entry:
      9   invoke void @bar()
     10     to label %exit unwind label %cleanup
     11 cleanup:
     12   %c = cleanuppad within none []
     13   call void @bar() [ "funclet"(token %c) ]
     14   cleanupret from %c unwind to caller
     15 exit:
     16   ret void
     17 }
     18 
     19 ; CHECK: foo: # @foo
     20 ; CHECK: movabsq $bar, %[[reg:[^ ]*]]
     21 ; CHECK: callq *%[[reg]]
     22 ; CHECK: retq
     23 
     24 ; CHECK: "?dtor$2@?0?foo@4HA":
     25 ; CHECK: movabsq $bar, %[[reg:[^ ]*]]
     26 ; CHECK: callq *%[[reg]]
     27 ; CHECK: retq                            # CLEANUPRET
     28