summary refs log tree commit diff
path: root/compiler/rustc_interface/src
AgeCommit message (Collapse)AuthorLines
2021-09-04Auto merge of #88598 - estebank:type-ascription-can-die-in-a-fire, r=wesleywiserbors-0/+1
Detect bare blocks with type ascription that were meant to be a `struct` literal Address part of #34255. Potential improvement: silence the other knock down errors in `issue-34255-1.rs`.
2021-09-03Detect bare blocks with type ascription that were meant to be a `struct` literalEsteban Kuber-0/+1
Address part of #34255. Potential improvement: silence the other knock down errors in `issue-34255-1.rs`.
2021-09-01Compute proc_macros in resolutions.Camille GILLOT-1/+1
2021-08-25don't generate partially-undef constsErik Desjardins-0/+1
2021-08-21Remove `Session.used_attrs` and move logic to `CheckAttrVisitor`Aaron Hill-4/+4
Instead of updating global state to mark attributes as used, we now explicitly emit a warning when an attribute is used in an unsupported position. As a side effect, we are to emit more detailed warning messages (instead of just a generic "unused" message). `Session.check_name` is removed, since its only purpose was to mark the attribute as used. All of the callers are modified to use `Attribute.has_name` Additionally, `AttributeType::AssumedUsed` is removed - an 'assumed used' attribute is implemented by simply not performing any checks in `CheckAttrVisitor` for a particular attribute. We no longer emit unused attribute warnings for the `#[rustc_dummy]` attribute - it's an internal attribute used for tests, so it doesn't mark sense to treat it as 'unused'. With this commit, a large source of global untracked state is removed.
2021-08-10Replace #[plugin_registrar] with exporting __rustc_plugin_registrarbjorn3-3/+0
2021-08-04Add back -Zno-profiler-runtimeAmanieu d'Antras-1/+2
This was removed by #85284 in favor of -Zprofiler-runtime=<name>. However the suggested -Zprofiler-runtime=None doesn't work because "None" is treated as a crate name.
2021-07-27Rollup merge of #86450 - tmiasko:move-size-limit, r=pnkfelixYuki Okushi-0/+1
Add flag to configure `large_assignments` lint The `large_assignments` lints detects moves over specified limit. The limit is configured through `move_size_limit = "N"` attribute placed at the root of a crate. When attribute is absent, the lint is disabled. Make it possible to enable the lint without making any changes to the source code, through a new flag `-Zmove-size-limit=N`. For example, to detect moves exceeding 1023 bytes in a cargo crate, including all dependencies one could use: ``` $ env RUSTFLAGS=-Zmove-size-limit=1024 cargo build -vv ``` Lint tracking issue #83518.
2021-07-18Remove deadlock virtual call.Camille GILLOT-1/+3
2021-07-18Move OnDiskCache to rustc_query_impl.Camille GILLOT-4/+7
2021-07-16Rollup merge of #87145 - jsgf:fix-lint-opt-hash, r=michaelwoeristerGuillaume Gomez-4/+18
Make --cap-lints and related options leave crate hash alone Closes: #87144
2021-07-15Rollup merge of #86478 - ehuss:future-incompat-test, r=oli-obkYuki Okushi-0/+1
Add -Zfuture-incompat-test to assist with testing future-incompat reports. This adds a `-Zfuture-incompat-test` cli flag to assist with testing future-incompatible reports. This flag causes all lints to be treated as a future-incompatible lint, and will emit a report for them. This is being added so that Cargo's testsuite can reliably test the reporting infrastructure. Right now, Cargo relies on using array_into_iter as a test subject. Since the breaking "future incompatible" lints are never intended to last forever, this means Cargo's testsuite would always need to keep changing to choose different lints (for example, #86330 proposed dropping that moniker for array_into_iter). With this flag, Cargo's tests can trigger any lint and check for the report.
2021-07-14Make --cap-lints and related options leave crate hash aloneJeremy Fitzhardinge-4/+18
Closes: #87144
2021-07-14Add -Zfuture-incompat-test to assist with testing future-incompat reports.Eric Huss-0/+1
2021-07-14Shrink the CrateStore dynamic interface.Camille GILLOT-6/+2
2021-07-08Rework SESSION_GLOBALS API to prevent overwriting itGuillaume Gomez-13/+14
2021-07-06Add flag to configure `large_assignments` lintTomasz Miąsko-0/+1
The `large_assignments` lints detects moves over specified limit. The limit is configured through `move_size_limit = "N"` attribute placed at the root of a crate. When attribute is absent, the lint is disabled. Make it possible to enable the lint without making any changes to the source code, through a new flag `-Zmove-size-limit=N`. For example, to detect moves exceeding 1023 bytes in a cargo crate, including all dependencies one could use: ``` $ env RUSTFLAGS=-Zmove-size-limit=1024 cargo build -vv ```
2021-07-06Revert "Revert "Merge CrateDisambiguator into StableCrateId""bjorn3-40/+8
This reverts commit 8176ab8bc18fdd7d3c2cf7f720c51166364c33a3.
2021-07-04Combine individual limit queries into single `limits` queryAaron Hill-7/+5
2021-07-04Query-ify global limit attribute handlingAaron Hill-5/+12
2021-07-02add track_path::path fn for proc-macro usageBernhard Schuster-3/+13
Ref #73921
2021-06-30Update comments.Camille GILLOT-12/+5
2021-06-30Fix AST pretty.Camille GILLOT-6/+6
2021-06-30Move AST crate.Camille GILLOT-17/+17
2021-06-30Arena-allocate Crate during lowering.Camille GILLOT-2/+1
2021-06-30Move lowering to create_global_ctxt.Camille GILLOT-24/+16
2021-06-30Inline lower_to_hir.Camille GILLOT-33/+19
2021-06-30Separate resolver creation from expansion.Camille GILLOT-57/+38
2021-06-30Simplify DepGraph creation.Camille GILLOT-25/+12
2021-06-28Introduce -Zprofile-closures to evaluate the impact of 2229Aman Arora-0/+1
This creates a CSV with name "closure_profile_XXXXX.csv", where the variable part is the process id of the compiler. To profile a cargo project you can run one of the following depending on if you're compiling a library or a binary: ``` cargo +stage1 rustc --lib -- -Zprofile-closures cargo +stage1 rustc --bin -- -Zprofile-closures ```
2021-06-26Auto merge of #86267 - ZuseZ4:master, r=nagisabors-0/+1
Allow loading of llvm plugins on nightly Based on a discussion in #82734 / with `@wsmoses.` Mainly moves [this](https://github.com/wsmoses/rust/commit/0149bc4e7e596005c665b132877abebe5258a0f6) behind a -Z flag, so it can only be used on nightly, as requested by `@nagisa` in https://github.com/rust-lang/rust/issues/82734#issuecomment-835863940 This change allows loading of llvm plugins like Enzyme. Right now it also requires a shared library LLVM build of rustc for symbol resolution. ```rust // test.rs extern { fn __enzyme_autodiff(_: usize, ...) -> f64; } fn square(x : f64) -> f64 { return x * x; } fn main() { unsafe { println!("Hello, world {} {}!", square(3.0), __enzyme_autodiff(square as usize, 3.0)); } } ``` ``` ./rustc test.rs -Z llvm-plugins="./LLVMEnzyme-12.so" -C passes="enzyme" ./test Hello, world 9 6! ``` I will try to figure out how to simplify the usage and get this into stable in a later iteration, but having this on nightly will already help testing further steps.
2021-06-23Use HTTPS links where possibleSmitty-1/+1
2021-06-21Only hash OutputTypes keys in non-crate-hash modeAaron Hill-3/+3
This effectively turns OutputTypes into a hybrid where keys (OutputType) are TRACKED and the values (optional paths) are TRACKED_NO_CRATE_HASH.
2021-06-21make -Zno-codegen TRACKED_NO_CRATE_HASHJeremy Fitzhardinge-1/+10
2021-06-21Implement assert_non_crate_hash_different for testsJeremy Fitzhardinge-0/+8
2021-06-21In --emit KIND=PATH options, only hash KINDJeremy Fitzhardinge-3/+3
The PATH has no material effect on the emitted artifact, and setting the patch via `-o` or `--out-dir` does not affect the hash. Closes https://github.com/rust-lang/rust/issues/86044
2021-06-18Auto merge of #85284 - eggyal:custom-profiler-runtime, r=jackh726bors-1/+1
Provide option for specifying the profiler runtime Currently, if `-Zinstrument-coverage` is enabled, the target is linked against the `library/profiler_builtins` crate (which pulls in LLVM's compiler-rt runtime). This option enables backends to specify an alternative runtime crate for handling injected instrumentation calls.
2021-06-13allow loading of llvm plugins on nightlyManuel Drehwald-0/+1
2021-06-11Auto merge of #85885 - bjorn3:remove_box_region, r=cjgillotbors-40/+87
Don't use a generator for BoxedResolver The generator is non-trivial and requires unsafe code anyway. Using regular unsafe code without a generator is much easier to follow. Based on #85810 as it touches rustc_interface too.
2021-06-10Remove unnecessary transmutebjorn3-2/+1
2021-06-09Add safety commentsbjorn3-0/+5
2021-06-09Use explicit drop implbjorn3-8/+13
2021-06-08Do not require the DefPathTable to construct the on-disk cache.Camille GILLOT-3/+1
2021-06-08Don't require LintStore to live for 'a in configure_and_expand_innerbjorn3-1/+1
2021-06-08Revert "Let several methods take &Resolver instead of a BoxedResolver wrapper"bjorn3-29/+25
This reverts commit 5343ec338f72a61e2f51f9d90117092c8e8a725a.
2021-06-08Use a submodule as safety boundary for BoxedResolverbjorn3-55/+60
2021-06-08Don't use a generator for BoxedResolverbjorn3-119/+48
The generator is non-trivial and requires unsafe code anyway. Using regular unsafe code without a generator is much easier to follow.
2021-06-08Don't return a BoxedResolver on errorsbjorn3-5/+4
2021-06-08Inline two more methodsbjorn3-24/+14
2021-06-08Let several methods take &Resolver instead of a BoxedResolver wrapperbjorn3-25/+29