Commit Graph

1033 Commits

Author SHA1 Message Date
Guillaume Gomez
ccf5799782 Use cargo to build the build system binary 2023-09-25 17:04:44 +02:00
antoyo
2e585e85e1
Merge pull request #343 from GuillaumeGomez/add-attribute-doc
Add guide to add new attributes support in libgccjit
2023-09-22 18:23:15 -04:00
Oli Scherer
8373b05514 Have a single struct for queries and hook 2023-09-22 16:26:20 +00:00
Guillaume Gomez
a7d8b8eb9f Add guide to add new attributes support in libgccjit 2023-09-22 16:50:42 +02:00
Oli Scherer
38b9e26a75 Add a way to decouple the implementation and the declaration of a TyCtxt method. 2023-09-22 09:23:15 +00:00
antoyo
e7d1dc33c6
Merge pull request #337 from rust-lang/fix/gep
Fix gep on pointers to non-number
2023-09-20 17:57:04 -04:00
Antoni Boucher
be3b1e3321 Fix gep on pointers to non-number 2023-09-20 09:10:24 -04:00
antoyo
6118ee488a
Merge pull request #335 from rust-lang/feature/rdrand64
Implement llvm.x86.rdrand.64
2023-09-18 19:18:13 -04:00
Antoni Boucher
5ab4e2b484 Implement llvm.x86.rdrand.64 2023-09-18 18:24:09 -04:00
Ralf Jung
cd519aabd7 fix gcc, cranelift build 2023-09-15 10:43:44 +02:00
Ralf Jung
22e13b4c55 clarify PassMode::Indirect as well 2023-09-15 10:43:44 +02:00
Antoni Boucher
f3b82df8f8 Add note to readme 2023-09-14 21:49:14 -04:00
antoyo
44b9c75359
Merge pull request #329 from rust-lang/fix/enable-features
Fix/enable features
2023-09-14 21:48:39 -04:00
Antoni Boucher
f096c19db5 Handle target-cpu=native 2023-09-14 20:47:14 -04:00
Antoni Boucher
a9a2c687ff Send -march to gcc 2023-09-14 20:42:14 -04:00
Antoni Boucher
87daba2cad Only add feature flags on functions 2023-09-14 20:35:11 -04:00
Antoni Boucher
20d4c39462 Correctly handle target features 2023-09-14 19:55:19 -04:00
Antoni Boucher
f692124c5d Handle disabled features 2023-09-14 19:55:19 -04:00
Antoni Boucher
5bb0d630ab Do not always enable avx2 2023-09-14 19:55:19 -04:00
Antoni Boucher
45c501cdf9 Add note to readme 2023-09-14 19:55:19 -04:00
Antoni Boucher
adc0b210f3 Enable one more feature 2023-09-14 19:55:19 -04:00
Antoni Boucher
f6337e4966 Don't always enabled CPU features 2023-09-14 19:55:19 -04:00
antoyo
067bfc077b
Merge pull request #331 from rust-lang/feature/static-relocation
Handle static relocation model
2023-09-14 19:54:24 -04:00
Antoni Boucher
32df82648d Handle static relocation model 2023-09-14 19:02:00 -04:00
Deadbeef
d7766ffa36 treat host effect params as erased generics in codegen
This fixes the changes brought to codegen tests when effect params are
added to libcore, by not attempting to monomorphize functions that get
the host param by being `const fn`.
2023-09-14 07:34:35 +00:00
antoyo
661114246a
Merge pull request #330 from rust-lang/fix/asm-att-const
Fix const handling in ATT syntax
2023-09-09 13:33:23 -04:00
Antoni Boucher
cd1644a658 Fix const handling in ATT syntax 2023-09-09 12:50:25 -04:00
antoyo
15fafe70c4
Merge pull request #328 from GuillaumeGomez/gimple-output
Set the correct gimple output format
2023-09-07 22:10:42 -04:00
Guillaume Gomez
3e61cc3de2
Add simpler alternative to generate gimple 2023-09-07 14:21:58 +02:00
Guillaume Gomez
b3916539dd
Set the correct gimple output format 2023-09-07 14:03:56 +02:00
antoyo
e39f3a2484
Merge pull request #327 from GuillaumeGomez/fix-gimple-guide
Fix gimple guide
2023-09-06 17:53:03 -04:00
Guillaume Gomez
7324ee2da8
Add missing compilation 2023-09-06 17:38:50 +02:00
Guillaume Gomez
d214df291c
Fix gimple guide 2023-09-06 15:20:08 +02:00
Daniel Paoliello
8028885239 Deduplicate inlined function debug info, but create a new lexical scope to child subsequent scopes and variables from colliding 2023-09-01 14:27:21 -07:00
antoyo
b6ccb55f56
Merge pull request #324 from GuillaumeGomez/no-alias-optimization
Only apply NoAlias attribute if optimization is enabled
2023-08-31 17:55:41 -04:00
Guillaume Gomez
03bcfff8b3 Only apply NoAlias attribute if optimization is enabled 2023-08-31 21:19:36 +02:00
antoyo
4e41a8a632
Merge pull request #278 from rust-lang/feature/lto_2023-05-12
Add support for Link-Time Optimization
2023-08-30 21:15:39 -04:00
Antoni Boucher
62867dc29f LTO implementation 2023-08-30 20:29:24 -04:00
antoyo
2b956f535e
Merge pull request #312 from GuillaumeGomez/fn-param-noalias
Add support for `noalias` function parameters
2023-08-29 18:03:38 -04:00
Matthias Krüger
13e402ed7c Rollup merge of #111580 - atsuzaki:layout-ice, r=oli-obk
Don't ICE on layout computation failure

Fixes #111176 regression.

r? `@oli-obk`
2023-08-29 20:49:02 +02:00
Guillaume Gomez
c83e5679b3 Don't generate __restrict__ attribute for ByValue arguments 2023-08-29 15:45:48 +02:00
Katherine Philip
642fae9409 Don't ICE on layout computation failure 2023-08-28 12:40:39 -07:00
Matthias Krüger
cdb012e0ba Rollup merge of #115240 - RalfJung:llvm-no-type, r=bjorn3
codegen_llvm/llvm_type: avoid matching on the Rust type

This `match` is highly suspicious. Looking at `scalar_llvm_type_at` I think it makes no difference. But if it were to make a difference that would be a huge problem, since it doesn't look through `repr(transparent)`!

Cc `@eddyb` `@bjorn3`
2023-08-28 19:53:55 +02:00
Ralf Jung
0d2cd6f650 remove an unused argument
it was already unused before, but due to the recursion the compiler did not realize
2023-08-28 18:21:16 +02:00
Ralf Jung
44401b89ad carry out the same changes in the gcc backend 2023-08-28 16:35:22 +02:00
Wesley Wiser
ec4a85e889 Revert "Use the same DISubprogram for each instance of the same inlined function within the caller"
This reverts commit 687bffa493.

Reverting to resolve ICEs reported on nightly.
2023-08-25 19:49:10 -04:00
Guillaume Gomez
189dd7022a Update gccjit dependency 2023-08-25 22:39:22 +02:00
Guillaume Gomez
5ac2530d3c Add support for noalias function parameters 2023-08-25 22:39:22 +02:00
bors
17b7f1e198 Auto merge of #114643 - dpaoliello:inlinedebuginfo, r=wesleywiser
Use the same DISubprogram for each instance of the same inlined function within a caller

# Issue Details:
The call to `panic` within a function like `Option::unwrap` is translated to LLVM as a `tail call` (as it will never return), when multiple calls to the same function like this is inlined LLVM will notice the common `tail call` block (i.e., loading the same panic string + location info and then calling `panic`) and merge them together.

When merging these instructions together, LLVM will also attempt to merge the debug locations as well, but this fails (i.e., debug info is dropped) as Rust emits a new `DISubprogram` at each inline site thus LLVM doesn't recognize that these are actually the same function and so thinks that there isn't a common debug location.

As an example of this when building for x86_64 Windows (note the lack of `.cv_loc` before the call to `panic`, thus it will be attributed to the same line at the `addq` instruction):

```
	.cv_loc	0 1 23 0                        # src\lib.rs:23:0
	addq	$40, %rsp
	retq
	leaq	.Lalloc_f570dea0a53168780ce9a91e67646421(%rip), %rcx
	leaq	.Lalloc_629ace53b7e5b76aaa810d549cc84ea3(%rip), %r8
	movl	$43, %edx
	callq	_ZN4core9panicking5panic17h12e60b9063f6dee8E
	int3
```

# Fix Details:
Cache the `DISubprogram` emitted for each inlined function instance within a caller so that this can be reused if that instance is encountered again, this also requires caching the `DILexicalBlock` and `DIVariable` objects to avoid creating duplicates.

After this change the above assembly now looks like:

```
	.cv_loc	0 1 23 0                        # src\lib.rs:23:0
	addq	$40, %rsp
	retq
	.cv_inline_site_id 5 within 0 inlined_at 1 0 0
	.cv_inline_site_id 6 within 5 inlined_at 1 12 0
	.cv_loc	6 2 935 0                       # library\core\src\option.rs:935:0
	leaq	.Lalloc_5f55955de67e57c79064b537689facea(%rip), %rcx
	leaq	.Lalloc_e741d4de8cb5801e1fd7a6c6795c1559(%rip), %r8
	movl	$43, %edx
	callq	_ZN4core9panicking5panic17hde1558f32d5b1c04E
	int3
```
2023-08-22 20:15:29 +00:00
antoyo
4ffa4254e1
Merge pull request #319 from GuillaumeGomez/build-system
Rustify prepare.sh command
2023-08-21 17:48:50 -04:00