| ; RUN: opt -S -passes=spirv-prepare-functions -mtriple=spirv64-unknown-unknown < %s | FileCheck %s | |
| declare i32 @__gxx_personality_v0(...) | |
| ; invoke call sites must get their FunctionType patched too, like plain calls. | |
| ; CHECK-LABEL: define void @invoke_caller( | |
| ; CHECK: invoke i32 @callback(i32 %x) | |
| define void @invoke_caller({ float, float } %x) personality ptr @__gxx_personality_v0 { | |
| entry: | |
| %r = invoke { float, float } @callback({ float, float } %x) | |
| to label %cont unwind label %lpad | |
| cont: | |
| ret void | |
| lpad: | |
| %lp = landingpad { ptr, i32 } | |
| cleanup | |
| ret void | |
| } | |
| ; CHECK-LABEL: define i32 @callback( | |
| define { float, float } @callback({ float, float } %x) { | |
| ret { float, float } %x | |
| } |