about summary refs log tree commit diff
path: root/src/rustllvm/ExecutionEngineWrapper.cpp
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-06-29 16:07:45 -0700
committerAlex Crichton <alex@alexcrichton.com>2015-07-01 09:35:54 -0700
commitf9de964ccf767498ed7b1b4a879aaca1777a9d3d (patch)
tree9a90e44f7b3c0e9b0738c41d1b360b5b4d139607 /src/rustllvm/ExecutionEngineWrapper.cpp
parentd4fe2a00276fa14a526409ccaee740ba01a17f3e (diff)
downloadrust-f9de964ccf767498ed7b1b4a879aaca1777a9d3d.tar.gz
rust-f9de964ccf767498ed7b1b4a879aaca1777a9d3d.zip
msvc: Enable landing pads by default
This commit turns on landing pads for MSVC by default, which means that we'll
now be running cleanups for values on the stack when an exception is thrown.
This commit "fixes" the previously seen LLVM abort by attaching the `noinline`
attribute to all generated drop glue to prevent landing pads from being inlined
into other landing pads.

The performance of MSVC is highly likely to decrease from this commit, but there
are various routes we can taken in the future if this ends up staying for quite
a while, such as generating a shim function only called from landing pads which
calls the actual drop glue, and this shim is marked noinline.

For now, however, this patch enables MSVC to successfully bootstrap itself!
Diffstat (limited to 'src/rustllvm/ExecutionEngineWrapper.cpp')
0 files changed, 0 insertions, 0 deletions