| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Support defining C compatible variadic functions
## Summary
Add support for defining C compatible variadic functions in unsafe rust with
`extern "C"` according to [RFC 2137].
## Details
### Parsing
When parsing a user defined function that is `unsafe` and `extern "C"` allow
variadic signatures and inject a "spoofed" `VaList` in the new functions
signature. This allows the user to interact with the variadic arguments via a
`VaList` instead of manually using `va_start` and `va_end` (See [RFC 2137] for
details).
### Codegen
When running codegen for a variadic function, remove the "spoofed" `VaList`
from the function signature and inject `va_start` when the arg local
references are created for the function and `va_end` on return.
## TODO
- [x] Get feedback on injecting `va_start/va_end` in MIR vs codegen
- [x] Properly inject `va_end` - It seems like it should be possible to inject
`va_end` on the `TerminatorKind::Return`. I just need to figure out how
to get the `LocalRef` here.
- [x] Properly call Rust defined C variadic functions in Rust - The spoofed
`VaList` causes problems here.
Related to: #44930
r? @ghost
[RFC 2137]: https://github.com/rust-lang/rfcs/blob/master/text/2137-variadic.md
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rollup of 14 pull requests
Successful merges:
- #58075 (Fix for issue #58050)
- #58627 (rustdoc: move collapse and unindent docs passes earlier)
- #58630 (Make `visit_clobber` panic-safe.)
- #58678 (Deny `async fn` in 2015 edition)
- #58680 (Fix an indexing error when using `x.py help`)
- #58703 (Fix copy-pasted typo for read_string return value)
- #58744 (Update dlmalloc to 0.1.3)
- #58746 (std: docs: Disable running several Stdio doctests)
- #58748 (update scoped_tls to 1.0)
- #58749 (Reduce Repetitions of (n << amt) >> amt)
- #58752 (Update string_cache_codegen to 0.4.2)
- #58755 (Clarify `rotate_{left,right}` docs)
- #58757 (Normalize the type Self resolves to in an impl)
- #58761 (Add tracking issue for the unwind attribute)
Failed merges:
r? @ghost
|
|
|
|
Function signatures with the `variadic` member set are actually
C-variadic functions. Make this a little more explicit by renaming the
`variadic` boolean value, `c_variadic`.
|
|
- Move closures defined in codegen_terminator into a separate helper
structure and implementation.
- Create helper functions for each of the complex match arms on the
terminators kind in codegen_terminator.
|
|
- Add the c_variadic language feature
- Add the c_variadic library feature
|
|
|
|
Add support for defining C compatible variadic functions in unsafe rust
with extern "C".
|
|
|
|
Add tracking issue for the unwind attribute
cc https://github.com/rust-lang/rust/issues/58760
|
|
Normalize the type Self resolves to in an impl
This is required at the very least in order to evaluate associated
constants for arrays.
Fixes #57796
Fixes #58212.
r? @oli-obk
cc @hellow554
|
|
Clarify `rotate_{left,right}` docs
I wondered what the `<<!` operator is although the exclamation mark was
only the end of the sentence.
|
|
Reduce Repetitions of (n << amt) >> amt
Fixes part of [#49937](https://github.com/rust-lang/rust/issues/49937).
|
|
update scoped_tls to 1.0
scoped_tls has been updated to version 1.0
This PR will hopefully merge flawlessly :)
This fixes, among others, https://github.com/alexcrichton/scoped-tls/issues/9
Note, that the nightly feature has been removed in https://github.com/alexcrichton/scoped-tls/commit/64bd7b84a1765fb72a32caed3c17c970bdc6ad57
|
|
std: docs: Disable running several Stdio doctests
* A number of `Stdio` related doc examples include running the "rev"
command to illustrate piping commands. The majority of these tests are
marked as `no_run` except for two tests which were not
* Not running these tests is unlikely to cause any negative impact, and
doing so also allows the test suite to pass in environments where the
"rev" command is unavailable
|
|
Fix copy-pasted typo for read_string return value
|
|
Fix an indexing error when using `x.py help`
Fixes https://github.com/rust-lang/rust/issues/58640.
|
|
Deny `async fn` in 2015 edition
This commit prevents code using `async fn` from being compiled in Rust 2015 edition.
Compiling code of the form:
```rust
async fn foo() {}
```
Will now result in the error:
```
error[E0670]: `async fn` is not permitted in the 2015 edition
--> async.rs:1:1
|
1 | async fn foo() {}
| ^^^^^
error: aborting due to error
For more information about an error, try `rustc --explain E0670`.
```
This resolves #58652 and also resolves #53714.
r? @varkor
|
|
Make `visit_clobber` panic-safe.
Local measurements indicate the performance effect is negligible.
r? @petrochenkov
|
|
rustdoc: move collapse and unindent docs passes earlier
Moves these passes as early as possible so later passes will see the same markdown that is passed to the test collector.
Fixes #58473, and a similar issue with the private-doc-tests lint.
r? @QuietMisdreavus
|
|
Fix for issue #58050
Hi,
a quick PR to mention in the compiler error message that `?` is a macro operator, as according to issue #58050
It passed `python x.py test src/tools/tidy` locally, as well as the recommendation to run `/x.py test src/test/ui --stage 1 --bless`.
Let me know if anything else is needed.
|
|
Allow lang and lib features to share names
Fixes https://github.com/rust-lang/rust/issues/58715.
I didn't add a test, because there's currently no standard lang test feature and I felt apprehensive about adding a permanently unstable feature. Instead, a shared lang/lib feature will be used in https://github.com/rust-lang/rust/pull/57760 and will essentially provide an immediately test.
|
|
Update book submodule
Updates the book to the latest commit
This is to include [documentation SEO fix](https://github.com/rust-lang/book/pull/1788) ASAP.
|
|
[Step 1] Implement "small substs optimization" for substs of length 1
addresses part of #58310
r?@arielb1
|
|
|
|
Update stdsimd
This updates stdsimd to a Rust2015 / Rust2018 compatible version. Once this is merged it should be possible to migrate libcore and libstd to Rust2018. Once that happens, we can just require the 2018 edition in stdsimd.
|
|
Signed-off-by: Adonis <adonis.settouf@gmail.com>
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/test/ui/macros/macro-at-most-once-rep-2015-ques-rep.stderr
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Update src/test/ui/macros/macro-at-most-once-rep-2015-ques-rep.stderr
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Stabilize split_ascii_whitespace
Tracking issue FCP to merge: https://github.com/rust-lang/rust/issues/48656#issuecomment-442372750
fix stabilization order of uniform_paths.
hir: add HirId to main Hir nodes
Fix `std::os::fortanix_sgx::usercalls::raw::UsercallNrs`
Fixes https://github.com/fortanix/rust-sgx/issues/88
Update src/libsyntax/ext/tt/quoted.rs
Co-Authored-By: asettouf <adonis.settouf@gmail.com>
Revert "Merge remote-tracking branch 'upstream/master'"
This reverts commit 751f05bd155e2c55d4177fe8211df634faf3a644, reversing
changes made to 545a3e62b0cb473108869a61b271bc589afb49da.
|
|
Change-Id: I3fa00e999a2ee4eb72db1fdf53a8633b49176a18
|
|
This is required at the very least in order to evaluate associated
constants for arrays (see #58212).
|
|
I wondered what the `<<!` operator is although the exclamation mark was
only the end of the sentence.
|
|
|