Commit Graph

26 Commits

Author SHA1 Message Date
Ariel Ben-Yehuda
e3af9fa490 make the basic_blocks field private 2016-06-09 14:55:19 +03:00
Ariel Ben-Yehuda
bc1eb67721 introduce the type-safe IdxVec and use it instead of loose indexes 2016-06-09 14:26:08 +03:00
bors
0d531bfb88 Auto merge of #33989 - eddyb:mir-viz, r=nikomatsakis
[MIR] Make scopes debuginfo-specific (visibility scopes).

Fixes #32949 by having MIR (visibility) scopes mimic the lexical structure.
Unlike #33235, this PR also removes all scopes without variable bindings.

Printing of scopes also changed, e.g. for:
```rust
fn foo(x: i32, y: i32) { let a = 0; let b = 0; let c = 0; }
```
Before my changes:
```rust
fn foo(arg0: i32, arg1: i32) -> () {
    let var0: i32;                       // "x" in scope 1 at <anon>:1:8: 1:9
    let var1: i32;                       // "y" in scope 1 at <anon>:1:16: 1:17
    let var2: i32;                       // "a" in scope 3 at <anon>:1:30: 1:31
    let var3: i32;                       // "b" in scope 6 at <anon>:1:41: 1:42
    let var4: i32;                       // "c" in scope 9 at <anon>:1:52: 1:53

    ...

    scope tree:
    0 1 2 3 {
        4 5
        6 {
            7 8
            9 10 11
        }
    }
}
```
After my changes:
```rust
fn foo(arg0: i32, arg1: i32) -> () {
    scope 1 {
        let var0: i32;                   // "x" in scope 1 at <anon>:1:8: 1:9
        let var1: i32;                   // "y" in scope 1 at <anon>:1:16: 1:17
        scope 2 {
            let var2: i32;               // "a" in scope 2 at <anon>:1:30: 1:31
            scope 3 {
                let var3: i32;           // "b" in scope 3 at <anon>:1:41: 1:42
                scope 4 {
                    let var4: i32;       // "c" in scope 4 at <anon>:1:52: 1:53
                }
            }
        }
    }

    ...
}
2016-06-08 13:51:57 -07:00
Eduard Burtescu
0c5930ef25 mir: group span + visibility scope under a new SourceInfo type. 2016-06-07 19:21:56 +03:00
bors
9b2becaf6e Auto merge of #34128 - eddyb:mir-trans-fixes, r=luqmana
[MIR] Fix MIR trans edge cases that showed up on crater.

These fixes cover all of the [regressions found by crater](https://gist.github.com/nikomatsakis/88ce89ed06ef7f7f19bfd1e221d7f7ec) (for #34096).

Two of them were `Pair` edge cases (ZSTs and constants) causing LLVM assertions, the other one was  causing stack overflows in debug scripts compiled in debug mode, due to the `fn_ret_cast` `alloca` ending up in a loop.
2016-06-07 06:31:32 -07:00
bors
f35255038b Auto merge of #34012 - eddyb:tick-erased, r=nikomatsakis
rustc: add ReErased to be used by trait selection, MIR and trans.

`ReErased` replaces `ReStatic` (i.e. `'static`) for erasing regions.
Using a distinct lifetime helps prevent accidental mix-ups between the two.
It also allows cleaner type printing (see test changes), including in symbol names:
```rust
str..pattern..CharSearcher$LT$$u27$static$GT$::drop.30560::h840c2f2afc03bbea // before
str..pattern..CharSearcher::drop.30561::h6bd31d2af614377a // after
```
Not that we should be producing symbols this way, but it's still better.
2016-06-07 00:04:53 -07:00
Eduard Burtescu
11e31091a9 trans: don't forget to cast Pair constants of the wrong type. 2016-06-07 02:21:58 +03:00
Eduard Burtescu
c77166c685 rustc_const_eval: work around double rounding. 2016-06-05 19:18:28 +03:00
Eduard Burtescu
e71f6d8ac9 trans: report as many errors as possible for constants. 2016-06-05 14:41:04 +03:00
Eduard Burtescu
d735f6bf33 trans: implement CheckedBinaryOp in mir::constant. 2016-06-05 14:41:04 +03:00
Eduard Burtescu
1447fbf183 rustc_const_eval: track the length and index in IndexOutOfBounds. 2016-06-05 14:41:04 +03:00
Eduard Burtescu
f1f453cf3b trans: generalize OperandValue::FatPtr to all pairs of immediates. 2016-06-05 14:41:02 +03:00
Eduard Burtescu
156b1fb9e1 Add a new Assert terminator to MIR for bounds & arithmetic checks. 2016-06-05 14:41:02 +03:00
Eduard Burtescu
bcec7a5848 rustc: add ReErased to be used by trait selection, MIR and trans. 2016-06-05 13:58:51 +03:00
Michael Woerister
802bb578e4 trans: Use CrateContext::empty_substs_for_def_id() instead of Substs::empty() where appropriate. 2016-05-11 17:11:20 -04:00
Eduard Burtescu
a1c170fc35 rustc: Split local type contexts interners from the global one. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
20652162ca rustc: More interning for data used in Ty<'tcx>. 2016-05-11 04:14:58 +03:00
Michael Woerister
118cc9e8e1 Fix some rebasing fallout. 2016-05-09 16:17:00 -04:00
Eduard Burtescu
3b0e27cc74 trans: handle string literal reborrows. 2016-05-08 06:23:50 +03:00
Eduard Burtescu
5c42e694cb trans: support simd_shuffle using MIR constants for indices. 2016-05-07 19:14:33 +03:00
Eduard Burtescu
14efbf1481 mir: prepare for rvalue promotion support. 2016-05-07 07:19:10 +03:00
Eduard Burtescu
e1eca0a110 Translate constants from MIR instead of going through trans::expr/consts. 2016-05-07 07:19:10 +03:00
Benjamin Herr
c59ea491ea librustc_trans: use bug!(), span_bug!() 2016-03-31 22:06:52 +02:00
Oliver Schneider
3eac64747f move const_eval and check_match out of librustc 2016-03-30 13:43:36 +02:00
Oliver Schneider
6cc449ad24 rename rustc_const_eval to rustc_const_math 2016-03-30 11:10:21 +02:00
Eduard Burtescu
035a645e64 rustc_trans: move the contents of the trans module to top-level. 2016-03-27 01:23:28 +02:00