-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove addrspaces from IR #7063
Comments
If nobody objects, I'll try to work on this. |
@dotdash: we still output |
Sorry, should have mentioned that that commit is only in @graydon's gc branch, which has not been merged, yet. |
This is blocking compiling llvm-bc to js through emscripten. |
It's a self contained change, I'll try porting it over to master |
This is another big refactoring of `trans` though this is unlikely to have much of an impact on code size or speed. The major change here is the implementation of a `Type` struct which is the new home for all your LLVM `TypeRef` needs. It's a simple wrapper struct, with static methods for constructing types, then regular methods for manipulating/interrogating them. The purpose of this is mostly to make the code surrounding them somewhat more ideomatic. A line like: `T_ptr(T_ptr(T_i8()))` is now `Type::i8().ptr_to().ptr_to()`,which is much more like regular Rust code. There are a variety of smaller changes here and there: * Remove address spaces. At least it doesn't generate them, I haven't spent much time looking for related code. * Use a macro for declaring the LLVM intrinsics, makes it look much nicer. * Make the type for a string slice actually create a named `str_slice` type in LLVM, this makes reading the appropriate code much easier. * Change the way struct and enum type names are generated. This just means that a struct like `struct Foo { a: int }` now produces the IR `%struct.Foo = type { i64 }`, which is much easier to read. Similarly, other structs are a bit tighter to make it easier to read. --- --- --- This PR did get away from me a little, as I occasionally got distracted or as I fixed up problems with unrelated code that were stopping me from continuing. One major thing is that this PR contains the work from #7168, since that would have conflicted with this and it was broken anyway. Sorry for bundling it like this. Fixes #3670 and #7063 --- --- --- EDIT: This no longer removes the llvm insn stats.
What's the status of this bug? |
Done, fix was in #7182 |
Do you have an example? It's working just fine for me, on its own as well as in combination with -S |
nvm something else is wrong with my environment |
…arth Fix false-positive `debug_assert` in `panic` This fixes a false-positive in `clippy::panic` when `debug_assert` is used with a message. Fixes rust-lang/rust-clippy#7062. changelog: Fix false-positive in `panic` when `debug_assert` is used with a message
addrspaces were part of our abandoned precise GC strategy. Now they just make the IR more complex.
The text was updated successfully, but these errors were encountered: