]> git.lizzy.rs Git - rust.git/commit
auto merge of #10219 : alexcrichton/rust/drop-invoke, r=pcwalton
authorbors <bors@rust-lang.org>
Sun, 3 Nov 2013 19:16:17 +0000 (11:16 -0800)
committerbors <bors@rust-lang.org>
Sun, 3 Nov 2013 19:16:17 +0000 (11:16 -0800)
commit702767db65c9b9d4e601ec5de836246fb9a9e462
tree18c728968150eedb8b39fece9f3dfb7c5965a77d
parentdc079e1596bb5fd7b601fe1b605c8f30326ee748
parente35cd962a6971a98436da1281c91507a3db07104
auto merge of #10219 : alexcrichton/rust/drop-invoke, r=pcwalton

This commit changes drop glue generated for structs to use the invoke LLVM
instruction instead of call. What this means is that if the user destructor
triggers an unwinding, then the fields of the struct will still ge dropped.

This is not an attempt to support failing while failing, as that's mostly a
problem of runtime support. This is more of an issue of soundness in making sure
that destructors are appropriately run. The test included fails before this
commit, and only has one call to fail!(), yet it doesn't destroy its struct
fields.