bors
42eb5ff404
Auto merge of #55641 - nagisa:optimize-attr, r=pnkfelix
...
Implement optimize(size) and optimize(speed) attributes
This PR implements both `optimize(size)` and `optimize(speed)` attributes.
While the functionality itself works fine now, this PR is not yet complete: the code might be messy in places and, most importantly, the compiletest must be improved with functionality to run tests with custom optimization levels. Otherwise the new attribute cannot be tested properly. Oh, and not all of the RFC is implemented – attribute propagation is not implemented for example.
# TODO
* [x] Improve compiletest so that tests can be written;
* [x] Assign a proper error number (E9999 currently, no idea how to allocate a number properly);
* [ ] Perhaps reduce the duplication in LLVM attribute assignment code…
2019-01-26 07:08:18 +00:00
Simonas Kazlauskas
f38d0da893
Implement optimize(size) and optimize(speed)
2019-01-24 20:13:50 +02:00
Mark Simulacrum
db97c48ad6
Remove quote_*! macros and associated APIs
2019-01-24 07:37:34 -07:00
Alex Crichton
7616daabc7
rustc: Remove platform intrinsics crate
...
This was originally attempted in #57048 but it was realized that we
could fully remove the crate via the `"unadjusted"` ABI on intrinsics.
This means that all intrinsics in stdsimd are implemented directly
against LLVM rather than using the abstraction layer provided here. That
ends up meaning that this crate is no longer used at all.
This crate developed long ago to implement the SIMD intrinsics, but we
didn't end up using it in the long run. In that case let's remove it!
2019-01-14 09:54:23 -08:00
Mark Rousskov
2a663555dd
Remove licenses
2018-12-25 21:08:33 -07:00
Nikita Popov
8128d0d1a9
Serialize modules into ThinBuffer after initial optimization
...
Instead of keeping all modules in memory until thin LTO and only
serializing them then, serialize the module immediately after
it finishes optimizing.
2018-12-04 16:24:20 +01:00
Nikita Popov
bc2db43b9e
Remove unnecessary parts of run_fat_lto signature
...
Fat LTO merges into one module, so only return one module.
2018-12-04 16:10:24 +01:00
Nikita Popov
bdbee6311b
Separate out methods for running thin and fat LTO
2018-12-04 16:10:24 +01:00
Dan Robertson
08140878fe
libcore: Add va_list lang item and intrinsics
...
- Add the llvm intrinsics used to manipulate a va_list.
- Add the va_list lang item in order to allow implementing
VaList in libcore.
2018-11-26 22:56:19 +00:00
Eduard-Mihai Burtescu
0b569249c8
[eddyb] rustc_codegen_ssa: rename interfaces
to traits
.
2018-11-16 15:08:18 +02:00
Eduard-Mihai Burtescu
d1410ada92
[eddyb] rustc_codegen_ssa: avoid a Clone
bound on TargetMachine
.
2018-11-16 15:08:18 +02:00
Eduard-Mihai Burtescu
47c84c4234
[eddyb] rustc_codegen_llvm: remove unnecessary 'a
from LlvmCodegenBackend
impls.
2018-11-16 15:08:18 +02:00
Denis Merigoux
b9e5cf99a9
Separating the back folder between backend-agnostic and LLVM-specific code
2018-11-16 15:08:18 +02:00
Denis Merigoux
1ebdfbb026
Added some docs + start to &mut self builder methods
2018-11-16 15:08:18 +02:00
Denis Merigoux
015e4441f5
Finished moving backend-agnostic code to rustc_codegen_ssa
2018-11-16 15:08:18 +02:00
Denis Merigoux
c0a428ee70
Great separation of librustc_codegen_llvm: librustc_codegen_ssa compiles
2018-11-16 15:07:24 +02:00
Denis Merigoux
c9f26c2155
Beginning of moving all backend-agnostic code to rustc_codegen_ssa
2018-11-16 14:55:42 +02:00
Denis Merigoux
b02e5cce16
Moved Backend interface into rustc_codegen_utils
2018-11-16 14:40:16 +02:00
Denis Merigoux
4ba09ab8d2
Added compile codegen to backend trait
2018-11-16 14:38:19 +02:00
Denis Merigoux
6819e6e6e1
Preparing the generalization of base:compile_coodegen_unit
2018-11-16 14:38:15 +02:00
Denis Merigoux
8d530db2c5
Generalized base:codegen_crate
2018-11-16 14:36:43 +02:00
Denis Merigoux
4787b7cac9
Removed phantomdata no longer necessary
...
Because CodegenContext doesn't implement Backend anymore
2018-11-16 14:11:59 +02:00
Denis Merigoux
a1d0d4f943
Removing LLVM content from CommonMethods -> ConstMethods
2018-11-16 14:11:59 +02:00
Denis Merigoux
6d42574b7a
Prefixed const methods with "const" instead of "c"
2018-11-16 14:11:59 +02:00
Denis Merigoux
5f28e0a0b6
Added definition of type trait
2018-11-16 14:11:59 +02:00
Denis Merigoux
33eee83737
Removed code duplication for CommonWriteMethods
2018-11-16 14:11:59 +02:00
Denis Merigoux
4cc18d3de5
CommonWriteMethods are not static any more
2018-11-16 14:11:59 +02:00
Denis Merigoux
d577ec7e5f
New files and folders for traits
...
Moved common enums to common
2018-11-16 14:11:59 +02:00
Denis Merigoux
34c5dc045f
Generalized base.rs#call_memcpy and everything that it uses
...
Generalized operand.rs#nontemporal_store and fixed tidy issues
Generalized operand.rs#nontemporal_store's implem even more
With a BuilderMethod trait implemented by Builder for LLVM
Cleaned builder.rs : no more code duplication, no more ValueTrait
Full traitification of builder.rs
2018-11-16 14:11:09 +02:00
Denis Merigoux
c76fc3d804
Work around to fix issue https://github.com/rust-lang/rust/issues/53912
2018-11-16 14:11:09 +02:00
bjorn3
d46246b14a
Move collect_and_partition_mono_items to rustc_mir
2018-11-03 14:31:09 +01:00
bjorn3
942864a000
Move cg_llvm: 🔙 :linker to cg_utils
2018-11-03 13:35:09 +01:00
ljedrz
61f47737b5
codegen_llvm: whitespace & formatting improvements
2018-10-08 16:52:34 +02:00
Josh Stone
ce034951fb
Bump to 1.31.0 and bootstrap from 1.30 beta
2018-09-27 20:52:53 -07:00
toidiu
731f4efae5
stabalize infer outlives requirements (RFC 2093).
...
Co-authored-by: nikomatsakis
2018-09-11 11:40:04 -04:00
Michael Woerister
64a738d8ce
Support local ThinLTO with incremental compilation.
2018-08-31 15:22:52 +02:00
Michael Woerister
d97d1e192b
Persist ThinLTO import data in incr. comp. session directory.
2018-08-31 15:22:52 +02:00
Niko Matsakis
73fb1622b3
check that adding infer-outlives requirement to all crates works
2018-08-24 17:10:50 -04:00
bjorn3
d52047faf0
Remove LinkMeta struct
2018-08-18 12:08:06 +02:00
Michael Woerister
d662083a6c
Use CGU name as LLVM module name and add some caching to CGU name generation.
2018-08-15 14:50:54 +02:00
Guillaume Gomez
3e9a1a1b82
Rollup merge of #53230 - memoryruins:nll_bootstrap_4, r=nikomatsakis
...
[nll] enable feature(nll) on various crates for bootstrap: part 4
#53172
r? @nikomatsakis
2018-08-12 23:26:56 +02:00
memoryruins
46b818e276
[nll] librustc_codegen_llvm: enable feature(nll) for bootstrap
2018-08-10 06:28:24 -04:00
Mark Rousskov
e3177c6f3f
Move rustc::util::fs into separate (new) crate
2018-08-09 10:00:25 -06:00
varkor
c81b95f305
Remove unnecessary feature attributes that sneaked in
2018-08-05 15:54:49 +01:00
Wesley Wiser
45482c6f99
Basic profiling
2018-08-02 18:57:24 -04:00
Irina Popa
249d5acaec
rustc_codegen_llvm: use safe references for Context and Module.
2018-07-30 18:27:52 +03:00
Irina Popa
af04e9426c
rustc_codegen_llvm: move from empty enums to extern types.
2018-07-30 18:12:47 +03:00
Irina Popa
077be49bde
rustc_llvm: move to rustc_codegen_llvm::llvm.
2018-07-30 18:03:50 +03:00
Tatsuyuki Ishi
e098985939
Deny bare_trait_objects globally
2018-07-25 10:25:29 +09:00
Michael Woerister
5c0110f44b
Revert "Persist ThinLTO import data in incr. comp. session directory."
...
This reverts commit 8dc7ddb9763f28b83de7bf3b3025f8042ea9e830.
2018-07-16 08:58:56 +02:00