Commit graph

14157 commits

Author SHA1 Message Date
bors
c88ed2a1a7 Auto merge of #36819 - jseyfried:fix_ast_const_integer_ice, r=nrc
Fix ICE on some macros in const integer positions (e.g. `[u8; m!()]`)

Fixes #36816.
r? @nrc
2016-09-30 01:15:50 -07:00
bors
ff67da63ea Auto merge of #36752 - jonas-schievink:vartmparg, r=eddyb
Move MIR towards a single kind of local

This PR modifies MIR to handle function arguments (`Arg`), user-defined variable bindings (`Var`), compiler-generated temporaries (`Tmp`), as well as the return value pointer equally. All of them are replaced with a single `Local` type, a few functions for iterating over different kinds of locals, and a way to get the kind of local we're dealing with (mainly used in the constant qualification/propagation passes).

~~I haven't managed to fix one remaining issue: A `StorageDead` not getting emitted for a variable (see the `TODO` in the test). If that's fixed, this is basically good to go.~~ Found the issue (an off-by-one error), fix incoming.

r? @eddyb for changes to constant qualification and propagation I'm not quite sure about
2016-09-29 07:53:33 -07:00
bors
91f34c0c70 Auto merge of #36818 - jonathandturner:rollup, r=jonathandturner
Rollup of 12 pull requests

- Successful merges: #35286, #35892, #36460, #36704, #36741, #36760, #36787, #36789, #36794, #36803, #36811, #36813
- Failed merges:
2016-09-28 21:55:15 -07:00
Jeffrey Seyfried
4bec961a21 Add regression test. 2016-09-29 03:52:09 +00:00
Jonathan Turner
f1ea5cc273 Rollup merge of #36789 - jseyfried:non_inline_mod_in_block, r=nikomatsakis
Allow more non-inline modules in blocks

Currently, non-inline modules without a `#[path]` attribute are not allowed in blocks.
This PR allows non-inline modules that have an ancestor module with a `#[path]` attribute, provided there is not a nearer ancestor block.

For example,
```rust
fn main() {
    #[path = "..."] mod foo {
        mod bar; //< allowed by this PR
        fn f() {
            mod bar; //< still an error
        }
    }
}
```

Fixes #36772.
r? @nikomatsakis
2016-09-28 20:21:52 -07:00
Jonathan Turner
13c8e763d4 Rollup merge of #36787 - jseyfried:fix_test_harness_reexport_errors, r=nrc
Avoid re-export errors in the generated test harness

Fixes #36768.
r? @nrc
2016-09-28 20:21:51 -07:00
Jonathan Turner
45fd0626a4 Rollup merge of #36760 - nrc:input2, r=alexcrichton
Allow supplying an error destination via the compiler driver

Allows replacing stderr with a buffer from the client.

Also, some refactoring around run_compiler.
2016-09-28 20:21:51 -07:00
Jonathan Turner
8f2c000506 Rollup merge of #36741 - matklad:no-flacky-test, r=alexcrichton
Remove CString drop test.

The test relies on the undefined behavior, and so may fail in some
circumstances. This can be worked around by stubbing a memory allocator
in the test, but it is a bit of work, and LLVM could still theoretically
eliminate the write of the zero byte in release mode (which is
intended).

So let's just remove the test and mark the function as inline. It
shouldn't be optimized away when inlined into the debug build of user's
code.

Supersedes #36607

r? @alexcrichton
2016-09-28 20:21:51 -07:00
Jonathan Turner
94622260a8 Rollup merge of #36460 - mikhail-m1:35123-map3, r=nikomatsakis
map crate numbers between compilations

?r nikomatsakis
issue #35123
2016-09-28 20:21:50 -07:00
bors
eee2d04d87 Auto merge of #36395 - durka:rangeinclusive-no-esi, r=alexcrichton
remove ExactSizeIterator from RangeInclusive<{u,i}{32,size}>

Fixes #36386.

This is a [breaking-change] for nightly users of `#![feature(inclusive_range_syntax)]` and/or `#![feature(inclusive_range)]`.
2016-09-28 18:31:07 -07:00
Jonas Schievink
d2c8893137 Remove MIR dump comments from mir-opt tests
They're ignored by the test runner, so let's not suggest that they
matter
2016-09-29 01:22:11 +02:00
Jonas Schievink
34155a87f6 Change the local prefix to _
There's no need for a long prefix, since there's nothing to distinguish
anymore.
2016-09-29 01:11:54 +02:00
Jeffrey Seyfried
174f093651 Add regression test. 2016-09-28 22:16:23 +00:00
Jonathan Turner
452bb07050 Rollup merge of #36783 - die4taoam:master, r=alexcrichton
testcase about issue-18088

this testcase is associated with issue #18088 . you can find that here. https://github.com/rust-lang/rust/issues/18088.
2016-09-28 10:33:57 -07:00
Jonathan Turner
f819b4d72d Rollup merge of #36782 - alexcrichton:rustc-macro-expand-order, r=nrc
rustc: Tweak expansion order of custom derive

This commit alters the expansion order of custom macros-1.1 style `#[derive]`
modes. Instead of left-to-right the expansion now happens in three categories,
each of which is internally left-to-right:

* Old-style custom derive (`#[derive_Foo]`) is expanded
* New-style custom derive (macros 1.1) is expanded
* Built in derive modes are expanded

This gives built in derive modes maximal knowledge about the struct that's being
expanded and also avoids pesky issues like exposing `#[structural_match]` or
`#[rustc_copy_clone_marker]`.

cc #35900
2016-09-28 10:33:57 -07:00
Jonathan Turner
224e882878 Rollup merge of #36757 - KiChjang:E0025-format, r=jonathandturner
Update E0025 to new error format

Part of #35233.
Fixes #35198.

r? @jonathandturner
2016-09-28 10:33:56 -07:00
Jonathan Turner
475a41bd50 Rollup merge of #36376 - GuillaumeGomez:e0050, r=jonathandturner
Update E0050 to new error format

Part of #35233.
Fixes #35211.

r? @jonathandturner
2016-09-28 10:33:56 -07:00
ParkHanbum
b543f3a4b2 Add testcase for issue-18088.
ref : https://github.com/rust-lang/rust/issues/18088.
2016-09-28 23:05:32 +09:00
Guillaume Gomez
61cbf414d7 Update E0050 to new error format 2016-09-28 11:39:55 +02:00
bors
755516bb96 Auto merge of #36776 - alexcrichton:rustc-macro-dep-files, r=nrc
rustc: Use a special filename for macros 1.1

This "special filename" is surrounded by `<>` to ensure that
`FileMap::is_real_file` returns `false`. This way the "files" parsed here aren't
emitted as dep info `.d` files and don't confuse Cargo about non-existent files.

Closes #36625
2016-09-27 20:21:12 -07:00
Nick Cameron
e8a4db25ac Allow supplying an error destination via the compiler driver
Allows replacing stderr with a buffer from the client.

Also, some refactoring around run_compiler.
2016-09-28 16:20:30 +13:00
Jeffrey Seyfried
28393be8df Add regression test. 2016-09-27 21:51:44 +00:00
bors
a059cb2f33 Auto merge of #36601 - jseyfried:build_reduced_graph_in_expansion, r=nrc
Assign def ids and build the module graph during expansion

r? @nrc
2016-09-27 14:11:07 -07:00
Alex Crichton
e5e7021ca5 rustc: Tweak expansion order of custom derive
This commit alters the expansion order of custom macros-1.1 style `#[derive]`
modes. Instead of left-to-right the expansion now happens in three categories,
each of which is internally left-to-right:

* Old-style custom derive (`#[derive_Foo]`) is expanded
* New-style custom derive (macros 1.1) is expanded
* Built in derive modes are expanded

This gives built in derive modes maximal knowledge about the struct that's being
expanded and also avoids pesky issues like exposing `#[structural_match]` or
`#[rustc_copy_clone_marker]`.

cc #35900
2016-09-27 12:41:02 -07:00
Alex Crichton
20a71b25c0 rustc: Use a special filename for macros 1.1
This "special filename" is surrounded by `<>` to ensure that
`FileMap::is_real_file` returns `false`. This way the "files" parsed here aren't
emitted as dep info `.d` files and don't confuse Cargo about non-existent files.

Closes #36625
2016-09-27 12:03:28 -07:00
bors
ea65ab6c7e Auto merge of #36761 - jonathandturner:E0425_E0446_E0449, r=nrc
Update E0425, E0446, E0449

This addresses https://github.com/rust-lang/rust/issues/35343, https://github.com/rust-lang/rust/issues/35923, and https://github.com/rust-lang/rust/issues/35924.  Part of https://github.com/rust-lang/rust/issues/35233

Specifically, this adds labels to these error messages following the suggestions in the attached bugs.

r? @nrc
2016-09-27 07:30:34 -07:00
bors
8467e8d24a Auto merge of #36758 - michaelwoerister:incr-comp-file-headers, r=eddyb
incr.comp.: Let the compiler ignore incompatible incr. comp. cache artifacts

Implements #35720.

cc @nikomatsakis
2016-09-27 04:05:34 -07:00
Jeffrey Seyfried
dfa69be38a Fix fallout in tests. 2016-09-27 06:43:51 +00:00
bors
ec7679b460 Auto merge of #36764 - jonathandturner:rollup, r=jonathandturner
Rollup of 14 pull requests

- Successful merges: #36563, #36574, #36586, #36662, #36663, #36669, #36676, #36721, #36723, #36727, #36729, #36742, #36754, #36756
- Failed merges:
2016-09-26 23:30:19 -07:00
Jonathan Turner
e832762ba6 Rollup merge of #36756 - alygin:e0512-new-format, r=jonathandturner
New error format for E0512

Part of #35233, fixes #36107

r? @jonathandturner
2016-09-26 17:29:50 -07:00
Jonathan Turner
df52628ee3 Rollup merge of #36727 - kallisti5:master, r=Aatch
Haiku: Initial work at OS support

These changes should be non-invasive to non-Haiku platforms. These patches were hand reworked from Neil's original Rust 1.9.0 patches. I've done some style cleanup and design updates along the way.

There are a few small additional patches to libc, rust-installer and compiler-rt that will be submitted once this one is accepted.

Haiku can be compiled on Linux, and a full gcc cross-compiler with a Haiku target is available, which means bootstrapping should be fairly easy. The patches here have already successfully bootstrapped under our haiku x86_gcc2 architecture. http://rust-on-haiku.com/wiki/PortingRust

I'll be focusing on our more modern gcc5 x86 and x86 architectures for now.

As for support, we're not seeking official support for now. We understand Haiku isn't a top-tier OS choice, however having these patches upstream greatly reduces the amount of patchwork we have to do. Mesa has Haiku code upstream, and we submit patches to keep it going. Mesa doesn't test on Haiku and we're ok with that :-)
2016-09-26 17:29:49 -07:00
Jonathan Turner
9b72650890 Rollup merge of #36723 - GuillaumeGomez:e0513, r=jonathandturner
E0513

Part of #35233

r? @jonathandturner
2016-09-26 17:29:48 -07:00
Jonathan Turner
02cc578676 Rollup merge of #36721 - TimNN:infinite-emptiness, r=nrc
reject macros with empty repetitions

Fixes #5067 by checking the lhs of `macro_rules!` for repetitions which could match an empty token tree.
2016-09-26 17:29:48 -07:00
Jonathan Turner
1d9646228d Rollup merge of #36662 - jseyfried:parse_macro_invoc_paths, r=nrc
parser: support paths in bang macro invocations (e.g. `path::to::macro!()`)

r? @nrc
2016-09-26 17:29:47 -07:00
Jonathan Turner
c816720242 Rollup merge of #36574 - japaric:link-arg, r=alexcrichton
rustc: implement -C link-arg

this flag lets you pass a _single_ argument to the linker but can be
used _repeatedly_. For example, instead of using:

```
rustc -C link-args='-l bar' (..)
```

you could write

```
rustc -C link-arg='-l' -C link-arg='bar' (..)
```

This new flag can be used with RUSTFLAGS where `-C link-args` has
problems with "nested" spaces:

```
RUSTFLAGS='-C link-args="-Tlayout.ld -nostartfiles"'
```

This passes three arguments to rustc: `-C` `link-args="-Tlayout.ld` and
`-nostartfiles"` to `rustc`. That's not what we meant. But this does
what we want:

```
RUSTFLAGS='-C link-arg=-Tlayout.ld -C link-arg=-nostartfiles`
```

cc rust-lang/rfcs#1509

r? @alexcrichton
cc @Zoxc

This needs a test. Any suggestion?
2016-09-26 17:29:47 -07:00
Jonas Schievink
168a0795c6 Fix codegen test (value names changed) 2016-09-27 02:20:46 +02:00
Jonathan Turner
c0f29fdd58 Update E0446 label with improved wording 2016-09-26 17:05:43 -07:00
Keith Yeung
fd7314f534 Update E0025 to new error format 2016-09-26 16:11:05 -07:00
Jonathan Turner
2fa91b23c5 Update E0425, E0446, E0449 2016-09-26 16:05:46 -07:00
bors
388c3f25f9 Auto merge of #36661 - jneem:master, r=nrc
Change error message for intrinsic signature.

Makes it so the signature of the intrinsic in the user's code is
"found," while the signature that rustc knows about is "expected."

Before this patch, the code
```
extern "platform-intrinsic" {
    fn x86_mm_movemask_ps() -> i32;
}
```
would give the error
```
error[E0444]: platform-specific intrinsic has invalid number of arguments: found 1, expected 0
 --> test.rs:4:5
  |
4 |     fn x86_mm_movemask_ps() -> i32;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to previous error
```

After this patch, it says "found 0, expected 1".
2016-09-26 14:26:18 -07:00
Michael Woerister
1e5c253aa1 incr.comp.: Add test case for cache artifact file headers. 2016-09-26 17:14:31 -04:00
Jonas Schievink
e75feea696 Fix off-by-one when emitting StorageDead for vars 2016-09-26 22:30:56 +02:00
Andrew Lygin
157208b046 New error format for E0512 2016-09-26 22:49:22 +03:00
Guillaume Gomez
1e4e81c320 Add compile-fail test for E0513 2016-09-26 20:52:01 +02:00
Jonas Schievink
393db2d830 [WIP] Move MIR towards a single kind of local 2016-09-26 20:41:54 +02:00
Aleksey Kladov
300e13808e Remove CString drop test.
The test relies on the undefined behavior, and so may fail in some
circumstances. This can be worked around by stubbing a memory allocator
in the test, but it is a bit of work, and LLVM could still theoretically
eliminate the write of the zero byte in release mode (which is
intended).

So let's just remove the test and mark the function as inline. It
shouldn't be optimized away when inlined into the debug build of user's
code.
2016-09-26 20:50:32 +03:00
Joe Neeman
159aa0b902 Add a compile-fail test. 2016-09-26 18:48:35 +02:00
bors
b786976a15 Auto merge of #36730 - jseyfried:make_macro_rules_invocations_magic, r=nrc
Forbid user-defined macros named "macro_rules"

This is a [breaking-change].
r? @nrc
2016-09-26 01:21:00 -07:00
bors
0a0215ddcd Auto merge of #36652 - giannicic:issue-36553, r=nrc
this commit corrects E0520 error text.
See referenced issue for further info

r? @nrc
2016-09-25 22:03:28 -07:00
Tim Neumann
51ea050457 reject macros with empty repetitions 2016-09-26 06:59:06 +02:00