Skip to content

Commit

Permalink
Explain flag value of 8 for msvc_try
Browse files Browse the repository at this point in the history
  • Loading branch information
Amanieu committed Jan 11, 2020
1 parent 838e387 commit ed217a5
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/librustc_codegen_llvm/intrinsic.rs
Expand Up @@ -952,11 +952,15 @@ fn codegen_msvc_try(
let cs = catchswitch.catch_switch(None, None, 1);
catchswitch.add_handler(cs, catchpad.llbb());

// The flag value of 8 indicates that we are catching the exception by
// reference instead of by value.
//
// Source: MicrosoftCXXABI::getAddrOfCXXCatchHandlerType in clang
let flags = bx.const_i32(8);
let tydesc = match bx.tcx().lang_items().eh_catch_typeinfo() {
Some(did) => bx.get_static(did),
None => bug!("eh_catch_typeinfo not defined, but needed for SEH unwinding"),
};
let flags = bx.const_i32(8); // Catch by reference
let funclet = catchpad.catch_pad(cs, &[tydesc, flags, slot]);

let i64_align = bx.tcx().data_layout.i64_align.abi;
Expand Down

0 comments on commit ed217a5

Please sign in to comment.