Commit Graph

658 Commits

Author SHA1 Message Date
Steven Fackler
a585b4e8a0 Properly handle cfgs in rustdoc
Rustdoc would previously improperly handle key="value" style cfgs, which
are notably used for Cargo features.
2014-10-06 19:39:23 -07:00
P1start
94bcd3539c Set the non_uppercase_statics lint to warn by default 2014-10-03 20:39:56 +13:00
Alex Crichton
dd0c786d33 rollup merge of #17682 : nodakai/librustc-handy-version 2014-10-02 14:50:18 -07:00
bors
b2d4eb186e auto merge of #17590 : bjadamson/rust/rustc-improvements, r=alexcrichton
Removes an unnecessary allocation when passing the command line arguments to the librustc driver.
2014-10-02 15:57:19 +00:00
bors
dd7f00de80 auto merge of #17681 : jgallagher/rust/dep-info-escape-spaces, r=alexcrichton
cc #17627
2014-10-02 08:12:19 +00:00
NODA, Kai
1dfb23f4cf librustc/driver: expose build information of rustc.
CFG_RELEASE, CFG_VER_HASH and CFG_VER_DATE were only available as an output
to stdout from the driver::version() function that had an inconvenient
signature.
2014-10-02 02:02:43 +08:00
John Gallagher
2883b7682a Make --dep-info escape spaces in filenames
Closes #17627
2014-10-01 11:40:00 -04:00
Florian Hahn
49e976d771 Limit recursion depth for macro expansions, closes #17628 2014-10-01 11:46:04 +02:00
Benjamin Adamson
d96faf7e71 Remove unnecessary allocation, update API name for starting the rustc driver. 2014-09-30 13:54:45 -07:00
Alex Crichton
7784a8d397 rollup merge of #17592 : kmcallister/inline-asm-loc 2014-09-29 08:14:23 -07:00
Alex Crichton
792e32bcfc rollup merge of #17576 : kmcallister/hide-quotes 2014-09-29 08:12:51 -07:00
bors
7eb9337dac auto merge of #17527 : sfackler/rust/cfg-syntax, r=alexcrichton
We'll need a snapshot before we can convert the codebase over and turn on the deprecation warnings.

cc #17490

This is sitting on top of #17506
2014-09-28 08:57:57 +00:00
Steven Fackler
9519abecfb Convert cfg syntax to new system
This removes the ability to use `foo(bar)` style cfgs. Switch them to
`foo_bar` or `foo="bar"` instead.

[breaking-change]
2014-09-27 22:59:26 -07:00
Keegan McAllister
9d60de93e2 Translate inline assembly errors back to source locations
Fixes #17552.
2014-09-27 11:10:37 -07:00
Keegan McAllister
fc1b908322 Hide the quote_*! macros when the feature gate is off
This makes it easier to experiment with improved quasiquoting as an ordinary
plugin library.

The list of quote macros in feature_gate.rs was already out of sync;
this commit also prevents that problem in the future.
2014-09-26 17:17:14 -07:00
Niko Matsakis
e924357554 Remove the last redundant check from kindck, and then remove the pass as well. 2014-09-25 07:09:13 -04:00
bors
5e13d3aa00 auto merge of #17378 : Gankro/rust/hashmap-entry, r=aturon
Deprecates the `find_or_*` family of "internal mutation" methods on `HashMap` in
favour of the "external mutation" Entry API as part of RFC 60. Part of #17320,
but this still needs to be done on the rest of the maps. However they don't have
any internal mutation methods defined, so they can be done without deprecating
or breaking anything. Work on `BTree` is part of the complete rewrite in #17334.

The implemented API deviates from the API described in the RFC in two key places:

* `VacantEntry.set` yields a mutable reference to the inserted element to avoid code
duplication where complex logic needs to be done *regardless* of whether the entry
was vacant or not.
* `OccupiedEntry.into_mut` was added so that it is possible to return a reference
into the map beyond the lifetime of the Entry itself, providing functional parity
to `VacantEntry.set`.

This allows the full find_or_insert functionality to be implemented using this API.
A PR will be submitted to the RFC to amend this.

[breaking-change]
2014-09-25 03:32:36 +00:00
Alexis Beingessner
fe8a413fc0 handling fallout from entry api 2014-09-24 21:53:58 -04:00
Alex Crichton
92cc12b01c Revert "Prefer bundled gcc. External gcc can still be used if one provides a full path via -Clinker=..."
This reverts commit 94f05324fe.
2014-09-22 10:14:05 -07:00
bors
4e5b62618c auto merge of #17419 : anchovieshat/rust/remove_no_opt, r=cmr
Closes #13649
2014-09-21 21:45:28 +00:00
bors
8d3728fae0 auto merge of #17412 : vadimcn/rust/gccpref, r=alexcrichton
Fixes #17251
2014-09-21 16:30:28 +00:00
Colin Davidson
a7a1bf81d7 Move -Z lto to -C lto.
Closes #12443
2014-09-21 02:17:31 -04:00
Colin Davidson
b2b0737fbe Remove -Z no-opt flag.
Closes #13649
2014-09-21 00:52:04 -04:00
Vadim Chugunov
94f05324fe Prefer bundled gcc. External gcc can still be used if one provides a full path via -Clinker=... 2014-09-20 11:44:01 -07:00
Alex Crichton
04f5fe5a08 rollup merge of #17338 : nick29581/variants-namespace 2014-09-19 10:00:29 -07:00
Nick Cameron
ce0907e46e Add enum variants to the type namespace
Change to resolve and update compiler and libs for uses.

[breaking-change]

Enum variants are now in both the value and type namespaces. This means that
if you have a variant with the same name as a type in scope in a module, you
will get a name clash and thus an error. The solution is to either rename the
type or the variant.
2014-09-19 15:11:00 +12:00
Eduard Burtescu
7c5df404b0 rustc: move freevar finding to resolve. 2014-09-18 14:36:36 +03:00
bors
ad9ed40e7f auto merge of #17264 : bkoropoff/rust/issue-17252, r=nick29581
Recursive items are currently detected in the `check_const` pass which runs after type checking.  This means a recursive static item used as an array length will cause type checking to blow the stack.  This PR separates the recursion check out into a separate pass which is run before type checking.

Closes issue #17252

r? @nick29581
2014-09-17 14:06:19 +00:00
Nick Cameron
74db87b99d move feature_gate to libsyntax 2014-09-17 16:53:20 +12:00
Nick Cameron
375c95b7ad move std_inject to libsyntax 2014-09-17 16:53:20 +12:00
Nick Cameron
520671f150 move most of front to libsyntax 2014-09-17 16:53:20 +12:00
Aaron Turon
fc525eeb4e Fallout from renaming 2014-09-16 14:37:48 -07:00
bors
a8d478db51 auto merge of #17208 : kmcallister/rust/llvm-diagnostics, r=thestinger
I would like to map this information back to AST nodes, so that we can print remarks with spans, and so that remarks can be enabled on a per-function basis.  Unfortunately, doing this would require a lot more code restructuring — for example, we currently throw away the AST map and lots of other information before LLVM optimizations run.  So for the time being, we print the remarks with debug location strings from LLVM.  There's a warning if you use `-C remark` without `--debuginfo`.

Fixes #17116.
2014-09-15 16:56:03 +00:00
Brian Koropoff
83b7cb7ceb Separate static item recursion check into its own pass
This new pass is run before type checking so that recursive items
are detected beforehand.  This prevents going into an infinite
recursion during type checking when a recursive item is used in
an array type.

As a bonus, use `span_err` instead of `span_fatal` so multiple
errors can be reported.

Closes issue #17252
2014-09-14 20:56:07 -07:00
Eduard Burtescu
b06212864f rustc: fix fallout from using ptr::P. 2014-09-14 04:20:34 +03:00
Keegan McAllister
ad9a1daa81 Add -C remark for LLVM optimization remarks
Fixes #17116.
2014-09-12 11:46:38 -07:00
Keegan McAllister
77b3a7ba8b Fix bad error message copypasta 2014-09-12 11:46:38 -07:00
Vadim Chugunov
c05ba8a298 Append target-specific tools directory ($(RUST)/bin/rustlib/<triple>/bin/) to PATH during linking,
so that rustc can invoke them.
2014-09-11 09:40:20 -07:00
Eduard Burtescu
28be695b2c rustc: fix fallout from the addition of a 'tcx lifetime on tcx. 2014-09-08 15:28:23 +03:00
Eduard Burtescu
22f8b8462e rustc: use a TypedArena to allocate types in the type context. 2014-09-08 15:14:10 +03:00
bors
dd626b48c4 auto merge of #16933 : nick29581/rust/dst-rvalue, r=nikomatsakis
Closes #16813 

r? @nikomatsakis I feel like I should be checking more things in check_rvalues, but not sure what - I don't properly understand expr_use_visitor
2014-09-08 02:36:15 +00:00
Nick Cameron
742f49c961 Forbid unsized rvalues
Closes #16813
2014-09-08 09:32:52 +12:00
inrustwetrust
61414a9850 Changed addl_lib_search_paths from HashSet to Vec
This makes the extra library paths given to the gcc linker come in
the same order as the -L options on the rustc command line.
2014-09-07 11:42:02 +02:00
Stuart Pernsteiner
cf672850df run optimization and codegen on worker threads
Refactor the code in `llvm::back` that invokes LLVM optimization and codegen
passes so that it can be called from worker threads.  (Previously, it used
`&Session` extensively, and `Session` is not `Share`.)  The new code can handle
multiple compilation units, by compiling each unit to `crate.0.o`, `crate.1.o`,
etc., and linking together all the `crate.N.o` files into a single `crate.o`
using `ld -r`.  The later linking steps can then be run unchanged.

The new code preserves the behavior of `--emit`/`-o` when building a single
compilation unit.  With multiple compilation units, the `--emit=asm/ir/bc`
options produce multiple files, so combinations like `--emit=ir -o foo.ll` will
not actually produce `foo.ll` (they instead produce several `foo.N.ll` files).

The new code supports `-Z lto` only when using a single compilation unit.
Compiling with multiple compilation units and `-Z lto` will produce an error.
(I can't think of any good reason to do such a thing.)  Linking with `-Z lto`
against a library that was built as multiple compilation units will also fail,
because the rlib does not contain a `crate.bytecode.deflate` file.  This could
be supported in the future by linking together the `crate.N.bc` files produced
when compiling the library into a single `crate.bc`, or by making the LTO code
support multiple `crate.N.bytecode.deflate` files.
2014-09-05 09:18:55 -07:00
Stuart Pernsteiner
e29aa1430b move back:🔗:write into a separate file 2014-09-05 09:18:55 -07:00
Stuart Pernsteiner
0ab27b1d5b split CrateContext into shared and local pieces
Break up `CrateContext` into `SharedCrateContext` and `LocalCrateContext`.  The
local piece corresponds to a single compilation unit, and contains all
LLVM-related components.  (LLVM data structures are tied to a specific
`LLVMContext`, and we will need separate `LLVMContext`s to safely run
multithreaded optimization.)  The shared piece contains data structures that
need to be shared across all compilation units, such as the `ty::ctxt` and some
tables related to crate metadata.
2014-09-05 09:18:55 -07:00
bors
d398eb76ae auto merge of #16419 : huonw/rust/pretty-expanded-hygiene, r=pnkfelix
Different Identifiers and Names can have identical textual representations, but different internal representations, due to the macro hygiene machinery (syntax contexts and gensyms). This provides a way to see these internals by compiling with `--pretty expanded,hygiene`.

This is useful for debugging & hacking on macros (e.g. diagnosing https://github.com/rust-lang/rust/issues/15750/https://github.com/rust-lang/rust/issues/15962 likely would've been faster with this functionality).

E.g. 

```rust
#![feature(macro_rules)]
// minimal junk
#![no_std]

macro_rules! foo {
    ($x: ident) => { y + $x }
}

fn bar() {
    foo!(x)
}
```
```rust
#![feature(macro_rules)]
// minimal junk
#![no_std]


fn bar /* 61#0 */() { y /* 60#2 */ + x /* 58#3 */ }
```
2014-08-30 10:51:26 +00:00
Huon Wilson
32e437161d rustc: implement a pretty mode to print ident/name's ctxt & gensyms.
`--pretty expanded,hygiene` is helpful with debugging macro issues,
since two identifiers/names can be textually the same, but different
internally (resulting in weird "undefined variable" errors).
2014-08-30 16:50:38 +10:00
P1start
ed2aad8b43 Add lint groups; define built-in lint groups bad_style and unused
This adds support for lint groups to the compiler. Lint groups are a way of
grouping a number of lints together under one name. For example, this also
defines a default lint for naming conventions, named `bad_style`. Writing
`#[allow(bad_style)]` is equivalent to writing
`#[allow(non_camel_case_types, non_snake_case, non_uppercase_statics)]`. These
lint groups can also be defined as a compiler plugin using the new
`Registry::register_lint_group` method.

This also adds two built-in lint groups, `bad_style` and `unused`. The contents
of these groups can be seen by running `rustc -W help`.
2014-08-30 09:12:04 +12:00
Huon Wilson
ddc8cc92c9 rustc: remove a trait that is unnecessary after pretty move.
The type in the `impl` is now in the module with the trait.
2014-08-29 18:05:26 +10:00