Mark Simulacrum
654131cb53
Add unreachable() after calls to eh_unwind_resume.
2016-12-20 20:04:45 -07:00
Mark Simulacrum
57914f626b
Move eh_personality() onto CrateContext
2016-12-20 20:04:45 -07:00
Mark Simulacrum
bd009dc444
Remove fn_ty from FunctionContext
2016-12-20 20:04:44 -07:00
Mark Simulacrum
15b9b27bb0
slice_for_each gives a reference already
2016-12-20 20:04:44 -07:00
Mark Simulacrum
295ea0d6c3
Reduce coerce_unsized_into to one call
...
We cannot inline due to it being recursive.
2016-12-20 20:04:44 -07:00
Mark Simulacrum
98a13ffe44
Remove outdated comment
2016-12-20 20:04:44 -07:00
Mark Simulacrum
6fac0a1a84
Change *.fcx.ccx to *.ccx
2016-12-20 20:04:43 -07:00
Mark Simulacrum
88202c5b83
Replace bcx.ccx() with bcx.ccx
2016-12-20 20:04:41 -07:00
Mark Simulacrum
f11721a13e
Add helper function to set debug locations
2016-12-20 20:03:35 -07:00
Mark Simulacrum
22bf541e27
Clean up uses of set_personality_fn.
...
Remove gnu/msvc constructors for Funclet; these are worse for
readability than explicit Some/None.
2016-12-20 20:03:35 -07:00
Mark Simulacrum
7f87163071
Simplify funclets creation.
2016-12-20 20:03:35 -07:00
Mark Simulacrum
5301d380b6
Remove unused bcx from LocalAnalyzer.
2016-12-20 20:03:35 -07:00
Mark Simulacrum
0256f60461
Move debug info check into create_function_debug_context
2016-12-20 20:03:34 -07:00
Mark Simulacrum
a445199afb
Remove public ccx function on MirContext
2016-12-20 20:03:34 -07:00
Mark Simulacrum
7f5dffbb19
Make debuginfo take debug_context instead of MirContext
2016-12-20 20:03:34 -07:00
Mark Simulacrum
2bda3b7acb
Inline and simplify init_cpad
2016-12-20 20:03:33 -07:00
Mark Simulacrum
e10695f161
Move param_substs onto MirContext
2016-12-20 20:03:32 -07:00
Mark Simulacrum
a42a3429fe
Move param_env onto SharedCrateContext, and move functions which need the ParamEnv onto it.
2016-12-20 20:03:32 -07:00
Mark Simulacrum
2b9a0efef4
Move debug_context to MirContext from FunctionContext
2016-12-20 20:03:32 -07:00
Mark Simulacrum
1173db0062
Inline last remaining use of Callee::call and delete unused code
2016-12-20 20:03:31 -07:00
Mark Simulacrum
b48e74b5b0
Rename 'blk and 'bcx to 'a
2016-12-20 20:03:31 -07:00
Mark-Simulacrum
1804131b6d
Remove Ref::clone for MirContext mir
2016-12-20 20:03:30 -07:00
Mark-Simulacrum
9c38a54cae
Inline FunctionContext.mir
2016-12-20 20:03:28 -07:00
Mark-Simulacrum
c4f6173af8
Replace init with get_entry_block.
2016-12-20 20:03:27 -07:00
Mark-Simulacrum
cbbdb73eb0
Remove FunctionContext::cleanup, replacing it with a Drop impl.
...
Move alloca and initial entry block creation into FunctionContext::new.
2016-12-20 20:03:27 -07:00
Mark-Simulacrum
bf8614b55a
Rename Builder::alloca to dynamic_alloca
2016-12-20 20:03:27 -07:00
Mark-Simulacrum
5262113fa6
Remove fcx.span
2016-12-20 20:03:26 -07:00
Mark-Simulacrum
820164582d
Remove DebugLoc.
2016-12-20 20:03:24 -07:00
Mark-Simulacrum
be981dce80
Start FunctionContext privatization and reduction
2016-12-20 20:02:53 -07:00
Mark-Simulacrum
5bdcc22b79
Remove FIXME
2016-12-20 20:02:52 -07:00
Mark-Simulacrum
dda6c8cf2f
Inline base::malloc_raw_dyn.
...
Move comment about not unwinding into liballoc.
2016-12-20 20:02:52 -07:00
Mark-Simulacrum
31691692a2
Deduplicate store_operand_direct and store_operand
2016-12-20 20:02:51 -07:00
Mark-Simulacrum
51dfba1185
Refactor Vec<CleanupScope> into Option<CleanupScope>.
2016-12-20 20:02:50 -07:00
Mark-Simulacrum
86b2bdb435
Rename LandingPad to Funclet
...
Changes internal storage to direct field values instead of Options,
since both fields are always either set or not set.
2016-12-20 20:02:48 -07:00
Mark-Simulacrum
8f3d824cc7
Remove common::Block.
2016-12-20 20:02:46 -07:00
Mark-Simulacrum
ad0a901d37
Remove *_builder
2016-12-20 20:01:40 -07:00
Mark-Simulacrum
59ef51c12a
Replace build.rs with calling functions on builder directly
2016-12-20 20:01:40 -07:00
Mark-Simulacrum
bf7d4534a7
Refactor Block into BlockAndBuilder
2016-12-20 20:01:40 -07:00
Austin Hicks
e1d8806efd
Fix closure debuginfo.
2016-12-19 21:14:27 -05:00
Austin Hicks
c8c3579bff
Fix closure arguments which are immediate because of field reordering.
...
While building immediates goes through type_of::type_of, extracting them must account for field reorderings.
2016-12-14 12:28:24 -05:00
Austin Hicks
0e61c0e231
Incorporate a bunch of review comments.
2016-12-14 12:28:20 -05:00
Austin Hicks
d754778083
Fix tuple and closure literals.
2016-12-14 12:28:19 -05:00
Mark-Simulacrum
1eab19dba8
Refactor ty::FnSig to privatize all fields
2016-12-05 22:22:49 -07:00
bors
ebec55406b
Auto merge of #37824 - jseyfried:symbols, r=eddyb
...
Clean up `ast::Attribute`, `ast::CrateConfig`, and string interning
This PR
- removes `ast::Attribute_` (changing `Attribute` from `Spanned<Attribute_>` to a struct),
- moves a `MetaItem`'s name from the `MetaItemKind` variants to a field of `MetaItem`,
- avoids needlessly wrapping `ast::MetaItem` with `P`,
- moves string interning into `syntax::symbol` (`ast::Name` is a reexport of `symbol::Symbol` for now),
- replaces `InternedString` with `Symbol` in the AST, HIR, and various other places, and
- refactors `ast::CrateConfig` from a `Vec` to a `HashSet`.
r? @eddyb
2016-11-21 08:08:47 -06:00
Jeffrey Seyfried
e85a0d70b8
Use Symbol
instead of InternedString
in the AST, HIR, and various other places.
2016-11-21 09:00:55 +00:00
Jeffrey Seyfried
d2f8fb0a0a
Move syntax::util::interner
-> syntax::symbol
, cleanup.
2016-11-20 23:40:20 +00:00
Dylan McKay
84415ea1f2
[LLVM 4.0] Set EH personality when resuming stack unwinding
...
To resume stack unwinding, the LLVM `resume` instruction must be used.
In order to use this instruction, the calling function must have an
exception handling personality set.
LLVM 4.0 adds a new IR validation check to ensure a personality is
always set in these cases.
This was introduced in [r277360](https://reviews.llvm.org/rL277360 ).
2016-11-18 11:24:19 -05:00
bors
c8867f8b46
Auto merge of #37672 - japaric:msp430, r=alexcrichton
...
enable the MSP430 LLVM backend
to let people experiment with this target out of tree.
The MSP430 architecture is used in 16-bit microcontrollers commonly used
in Digital Signal Processing applications.
---
How this was tested:
Declaring a custom target with the following specification:
``` json
{
"arch": "msp430",
"data-layout": "e-m:e-p:16:16-i32:16:32-a:16-n8:16",
"executables": true,
"linker": "msp430-gcc",
"llvm-target": "msp430",
"max-atomic-width": 0,
"no-integrated-as": true,
"os": "none",
"panic-strategy": "abort",
"relocation-model": "static",
"target-endian": "little",
"target-pointer-width": "16"
}
```
And this minimal file:
``` rust
pub fn start() -> ! {
loop {}
}
trait Copy {}
trait Sized {}
```
Produces the following object files:
```
$ rustc --target=msp430 --emit=obj foo.rs
$ msp430-objdump -Cd foo.o
foo.o: file format elf32-msp430
Disassembly of section .text.start:
00000000 <start>:
0: 21 83 decd r1
2: 00 3c jmp $+2 ;abs 0x4
4: 00 3c jmp $+2 ;abs 0x6
6: ff 3f jmp $+0 ;abs 0x6
$ rustc --target=msp430 --emit=obj foo.rs -O
$ msp430-objdump -Cd foo.o
foo.o: file format elf32-msp430
Disassembly of section .text.start:
00000000 <start>:
0: ff 3f jmp $+0 ;abs 0x0
```
---
r? @alexcrichton
~~TODO get this working with Makefiles so nightly releases include this backend~~
~~TODO measure the increase in binary size~~ +187KiB (+0.47%)
~~FIXME --emit=obj produces empty object files~~
2016-11-15 01:27:47 -08:00
Jorge Aparicio
30e5667607
fix #37673
2016-11-12 17:33:35 -05:00
Ariel Ben-Yehuda
57950982b2
rustc_trans: translate closures using the collector
...
Translate closures like normal functions, using the trans::collector
interface.
2016-11-12 20:08:03 +02:00