Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign upImplement unwinding for i686 MSVC #30448
Conversation
rust-highfive
assigned
nikomatsakis
Dec 17, 2015
This comment has been minimized.
This comment has been minimized.
|
(rust_highfive has picked a reviewer for you, use r? to override) |
This comment has been minimized.
This comment has been minimized.
|
cc @rust-lang/compiler, there's some pretty significant trans changes here! |
alexcrichton
referenced this pull request
Dec 17, 2015
Closed
test: Get some tests working on MSVC 32-bit #30168
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
4 times, most recently
from
3a1a73a
to
ce42d53
Dec 18, 2015
This comment has been minimized.
This comment has been minimized.
|
Oh and I think it's important to wait for travis before r+'ing this b/c that make sure that we're still compatible with LLVM 3.7 (which I believe is important for now) |
This comment has been minimized.
This comment has been minimized.
|
Travis failed compiling RustWrapper.cpp on LLVM_VERSION_MINOR < 8 paths. |
This comment has been minimized.
This comment has been minimized.
|
|
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
3 times, most recently
from
8e31506
to
ec26a6c
Dec 18, 2015
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
from
ec26a6c
to
122f9cb
Dec 18, 2015
nikomatsakis
reviewed
Dec 19, 2015
| @@ -686,5 +686,8 @@ extern "rust-intrinsic" { | |||
| /// Rust's "try catch" construct which invokes the function pointer `f` with | |||
| /// the data pointer `data`, returning the exception payload if an exception | |||
| /// is thrown (aka the thread panics). | |||
| #[cfg(not(stage0))] | |||
| pub fn try(f: fn(*mut u8), data: *mut u8, local_ptr: *mut u8) -> i32; | |||
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Nice work, @alexcrichton! After the first pass this looks fine to me. |
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
2 times, most recently
from
63dede1
to
ba96aa3
Dec 20, 2015
This comment has been minimized.
This comment has been minimized.
|
|
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
4 times, most recently
from
0fcca2c
to
2b49991
Dec 21, 2015
This comment has been minimized.
This comment has been minimized.
|
Impressive. |
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
from
03ef35c
to
f492521
Dec 22, 2015
This comment has been minimized.
This comment has been minimized.
|
@nikomatsakis brought up some interesting points on IRC that I didn't realize here. It turns out that today we actually cache cleanups for landing pads, for example with code like: pub fn foo() {
let _a = Foo;
bar();
let _b = Foo;
bar();
}There are two landing pads for this function from the two calls to A problem here, however, is that with I just remembered, however, that the This'll take some work to get working, but seems critical enough to get it done before landing. |
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
from
f492521
to
bd33af9
Dec 23, 2015
This comment has been minimized.
This comment has been minimized.
|
Ok, I've now pushed an updated version which handles caching better on MSVC. The caching for GNU/landingpad exceptions should be the same as it was before, and the IR for the snippet above in MSVC shows the caching being used as well. Currently the caching isn't as aggressively used on MSVC as it is on GNU b/c on MSVC you can't jump to the middle of a set of cleanup scopes, only the front. Perhaps that only matters for corner cases though? |
This comment has been minimized.
This comment has been minimized.
bors
added a commit
that referenced
this pull request
Jan 29, 2016
This comment has been minimized.
This comment has been minimized.
bors
added a commit
that referenced
this pull request
Jan 29, 2016
This comment has been minimized.
This comment has been minimized.
|
|
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
from
11698cb
to
f9b267a
Jan 29, 2016
This comment has been minimized.
This comment has been minimized.
bors
added a commit
that referenced
this pull request
Jan 29, 2016
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
|
alexcrichton
added some commits
Oct 23, 2015
alexcrichton
force-pushed the
alexcrichton:llvmup
branch
from
f9b267a
to
58f1b9c
Jan 30, 2016
This comment has been minimized.
This comment has been minimized.
bors
added a commit
that referenced
this pull request
Jan 30, 2016
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
bors
merged commit 58f1b9c
into
rust-lang:master
Jan 30, 2016
This was referenced Jan 30, 2016
alexcrichton
deleted the
alexcrichton:llvmup
branch
Jan 30, 2016
This comment has been minimized.
This comment has been minimized.
|
|
alexcrichton commentedDec 17, 2015
These commits perform a few high-level changes with the goal of enabling i686 MSVC unwinding:
In terms of landing this I plan to have this go through first, then verify that i686 MSVC works, then I'll enable
make checkon the bots for that target instead of justmakeas-is today.Closes #25869