852 Commits

Author SHA1 Message Date
Antoni Boucher
52716d237c Add back link to IRC 2023-07-27 19:21:00 -04:00
Antoni Boucher
14964ed2f6 Update the IRC link to the link of the Matrix channel 2023-07-24 13:50:04 -04:00
bors
9e58bacf90 Auto merge of #113877 - JhonnyBillM:reuse-codegen-ssa-monomorphization-errors-in-gcc, r=davidtwco
Reuse `codegen_ssa` monomorphization errors in `codegen_gcc`

Removes monomorphization errors duplication by reusing the ones defined in `codegen_ssa`.

Also updates `expected_simd` errors usage in `codegen_gcc` by assuming we want to treat those parameters as translatable. See 7a888fb56e
2023-07-24 11:29:59 +00:00
antoyo
36b059438d
Merge pull request #307 from GuillaumeGomez/const-attr
Add support for "ffi_const" function attribute
2023-07-22 09:14:48 -04:00
antoyo
6abd12ade0
Merge pull request #308 from GuillaumeGomez/gimple
Add instructions on how to generate GIMPLE format
2023-07-22 08:52:39 -04:00
Guillaume Gomez
cd57c6ea1c Add instructions on how to generate GIMPLE format 2023-07-22 14:49:43 +02:00
Guillaume Gomez
136548d3fe Update gccjit dependency 2023-07-22 14:44:20 +02:00
David Tolnay
e2a847460d Revert "Auto merge of #113166 - moulins:ref-niches-initial, r=oli-obk"
This reverts commit 557359f92512ca88b62a602ebda291f17a953002, reversing
changes made to 1e6c09a803fd543a98bfbe1624d697a55300a786.
2023-07-21 22:35:57 -07:00
bors
e865542981 Auto merge of #113166 - moulins:ref-niches-initial, r=oli-obk
Prototype: Add unstable `-Z reference-niches` option

MCP: rust-lang/compiler-team#641
Relevant RFC: rust-lang/rfcs#3204

This prototype adds a new `-Z reference-niches` option, controlling the range of valid bit-patterns for reference types (`&T` and `&mut T`), thereby enabling new enum niching opportunities. Like `-Z randomize-layout`, this setting is crate-local; as such, references to built-in types (primitives, tuples, ...) are not affected.

The possible settings are (here, `MAX` denotes the all-1 bit-pattern):
| `-Z reference-niches=` | Valid range |
|:---:|:---:|
| `null` (the default) | `1..=MAX` |
| `size` | `1..=(MAX- size)` |
| `align` | `align..=MAX.align_down_to(align)` |
| `size,align` | `align..=(MAX-size).align_down_to(align)` |

------

This is very WIP, and I'm not sure the approach I've taken here is the best one, but stage 1 tests pass locally; I believe this is in a good enough state to unleash this upon unsuspecting 3rd-party code, and see what breaks.
2023-07-21 15:00:36 +00:00
Guillaume Gomez
918332bea2 Add support for "ffi_const" function attribute 2023-07-21 11:23:41 +02:00
Matthias Krüger
c022c81ece Rollup merge of #113723 - khei4:khei4/llvm-stats, r=oli-obk,nikic
Resurrect: rustc_llvm: Add a -Z `print-codegen-stats` option to expose LLVM statistics.

This resurrects PR https://github.com/rust-lang/rust/pull/104000, which has sat idle for a while. And I want to see the effect of stack-move optimizations on LLVM (like https://reviews.llvm.org/D153453) :).

I have applied the changes requested by `@oli-obk` and `@nagisa`  https://github.com/rust-lang/rust/pull/104000#discussion_r1014625377 and https://github.com/rust-lang/rust/pull/104000#discussion_r1014642482 in the latest commits.

r? `@oli-obk`

-----

LLVM has a neat [statistics](https://llvm.org/docs/ProgrammersManual.html#the-statistic-class-stats-option) feature that tracks how often optimizations kick in. It's very handy for optimization work. Since we expose the LLVM pass timings, I thought it made sense to expose the LLVM statistics too.

-----
(Edit: fix broken link
(Edit2: fix segmentation fault and use malloc

If `rustc` is built with
```toml
[llvm]
assertions = true
```
Then you can see like
```
rustc +stage1 -Z print-codegen-stats -C opt-level=3  tmp.rs
===-------------------------------------------------------------------------===
                          ... Statistics Collected ...
===-------------------------------------------------------------------------===
         3 aa                           - Number of MayAlias results
       193 aa                           - Number of MustAlias results
       531 aa                           - Number of NoAlias results
...
```

And the current default build emits only
```
$ rustc +stage1 -Z print-codegen-stats -C opt-level=3  tmp.rs
===-------------------------------------------------------------------------===
                          ... Statistics Collected ...
===-------------------------------------------------------------------------===
$
```
This might be better to emit the message to tell assertion flag necessity, but now I can't find how to do that...
2023-07-21 06:52:27 +02:00
Moulins
1984e208e0 Don't treat ref. fields with non-null niches as dereferenceable_or_null 2023-07-21 03:31:46 +02:00
Jhonny Bill Mena
f746fe1e6c UPDATE - replace expected_simd error with one from codegen_ssa
Here I am assuming we want to treat these parameters (input, first, second, third, return) as translatable
2023-07-20 00:20:00 -04:00
Jhonny Bill Mena
5f56f49946 UPDATE - replace gcc monomorphization errors with ssa ones
Reduces error duplication and makes it more consistent across backends
2023-07-19 23:40:08 -04:00
chenx97
f2dded27f8 support for mips32r6 as a target_arch value 2023-07-18 18:58:18 +08:00
chenx97
5277ea10b5 support for mips64r6 as a target_arch value 2023-07-18 18:58:18 +08:00
antoyo
57d2ecb14e
Merge pull request #305 from GuillaumeGomez/pure-attr
Add support for "pure" function attribute
2023-07-17 18:10:00 -04:00
antoyo
ce0077c3a4
Merge pull request #306 from bjorn3/extract_helper
Extract a create_wrapper_function for use in allocator shim writing
2023-07-17 17:44:18 -04:00
Guillaume Gomez
34922fc3ce Update gccjit-rs version 2023-07-17 23:22:45 +02:00
Nicholas Nethercote
4bebfae44a Introduce MonoItemData.
It replaces `(Linkage, Visibility)`, making the code nicer. Plus the
next commit will add another field.
2023-07-17 08:44:48 +10:00
Patrick Walton
2c0c87d959 rustc_llvm: Add a -Z print-llvm-stats option to expose LLVM statistics.
LLVM has a neat [statistics] feature that tracks how often optimizations kick
in. It's very handy for optimization work. Since we expose the LLVM pass
timings, I thought it made sense to expose the LLVM statistics too.

[statistics]: https://llvm.org/docs/ProgrammersManual.html#the-statistic-class-stats-option
2023-07-16 22:56:04 +09:00
bjorn3
7ba60ecb53 Extract a create_wrapper_function for use in allocator shim writing
This deduplicates some logic and makes it easier to follow what wrappers
are produced. In the future it may allow moving the code to determine
which wrappers to create to cg_ssa.
2023-07-15 12:37:47 +00:00
Mahdi Dibaiee
d873fa7382 refactor(rustc_middle): Substs -> GenericArg 2023-07-14 13:27:35 +01:00
Guillaume Gomez
c04a631ea6 Add support for "pure" function attribute 2023-07-13 21:43:12 +02:00
antoyo
3a74f9352f
Merge pull request #301 from GuillaumeGomez/returns-twice
Add support for "returns_twice" function attribute
2023-07-12 21:17:33 -04:00
Guillaume Gomez
a6d1aa2810 Update gccjit dependency 2023-07-12 16:56:24 +02:00
Guillaume Gomez
97a0d35a8c Add support for "returns_twice" function attribute 2023-07-12 16:56:24 +02:00
antoyo
e062c2cc3b
Merge pull request #303 from rust-lang/license
Add license explanations
2023-07-09 10:18:27 -04:00
Antoni Boucher
e1092eb4d1 Add license explanations 2023-07-09 10:17:54 -04:00
antoyo
c4e86b6c3b
Merge pull request #299 from rust-lang/feature/jit-cpu-features
Add support for detecting CPU features
2023-07-05 17:45:59 -04:00
Boxy
761324d1df Move TyCtxt::mk_x to Ty::new_x where applicable 2023-07-05 20:27:07 +01:00
Antoni Boucher
91e04000ea Add support for detecting CPU features 2023-07-05 13:54:14 -04:00
Zalathar
744d05ccb6 Remove trait CoverageInfoMethods, since non-LLVM backends don't need it
These methods are only ever called from within `rustc_codegen_llvm`, so they
can just be declared there as well.
2023-07-05 20:40:40 +10:00
Zalathar
d710bee436 Narrow trait CoverageInfoBuilderMethods down to just one method
This effectively inlines most of `FunctionCx::codegen_coverage` into the LLVM
implementation of `CoverageInfoBuilderMethods`.
2023-07-05 20:40:39 +10:00
antoyo
48a3613a73
Merge pull request #286 from GuillaumeGomez/cold-attribute
Add support for cold attribute
2023-07-03 12:36:36 -04:00
Guillaume Gomez
5920bad104 Update dependencies 2023-07-03 16:56:34 +02:00
Guillaume Gomez
afc6489394 Add support for cold attribute 2023-06-30 17:11:09 +02:00
bors
ac79ddb6ca Auto merge of #112814 - antoyo:sync-cg_gcc-2023-06-19, r=bjorn3
Sync rustc_codegen_gcc 2023/06/19

Hi.
This is a sync of the rustc_codegen_gcc subtree.
Thanks.
2023-06-22 02:11:08 +00:00
Michael Goulet
ab1e4bb372 Rollup merge of #112499 - tgross35:py-ruff-fixes, r=Mark-Simulacrum
Fix python linting errors

These were flagged by `ruff`, run using the config in https://github.com/rust-lang/rust/pull/112482
2023-06-19 17:53:34 -07:00
Antoni Boucher
3dd0699e45 Update Cargo.lock 2023-06-19 20:44:01 -04:00
Antoni Boucher
38c16e9862 Merge commit '1bbee3e217d75e7bc3bfe5d8c1b35e776fce96e6' into sync-cg_gcc-2023-06-19 2023-06-19 18:51:02 -04:00
antoyo
1bbee3e217
Merge pull request #282 from rust-lang/sync_from_rust_2023_06_11
Sync from rust 2023 06 11
2023-06-19 18:45:38 -04:00
Antoni Boucher
37413a2cea Fix indent 2023-06-18 19:42:20 -04:00
Antoni Boucher
607cbfda14 Cleanup and update to rustc 2023-06-19 2023-06-19 10:53:33 -04:00
Antoni Boucher
3d7ec5923d Fix for check_ptr_call for variadic functions 2023-06-17 13:19:41 -04:00
bors
876a7d8d6f Auto merge of #100036 - DrMeepster:box_free_free_box, r=oli-obk
Remove `box_free` lang item

This PR removes the `box_free` lang item, replacing it with `Box`'s `Drop` impl. Box dropping is still slightly magic because the contained value is still dropped by the compiler.
2023-06-17 16:10:57 +00:00
Trevor Gross
42ecb50d56 Apply changes to fix python linting errors 2023-06-16 20:56:01 -04:00
DrMeepster
ec100514f8 remove box_free and replace with drop impl 2023-06-16 13:41:06 -07:00
Antoni Boucher
8560b07ebf TO REVERT: temporarily add a patch for rustc 2023-06-15 20:52:45 -04:00
Antoni Boucher
45bca00520 Handle alignment of the load instruction 2023-06-16 12:48:09 -04:00