Commit Graph

259 Commits

Author SHA1 Message Date
kennytm
e862efa65d
Rollup merge of #53274 - bjorn3:remove_statics_field, r=nagisa
Remove statics field from CodegenCx

It doesnt seem to be used anywhere.
2018-08-14 23:59:15 +08:00
kennytm
764755b0b0
Rollup merge of #53239 - cuviper:llvm5-closure-alloca, r=eddyb
rustc_codegen_llvm: Restore the closure env alloca hack for LLVM 5.

This hack was removed in #50949, but without it I found that building
`std` with full debuginfo would print many LLVM `DW_OP_LLVM_fragment`
errors, then die `LLVM ERROR: Failed to strip malformed debug info`.

It doesn't seem to be a problem for LLVM 6, so we can re-enable the hack
just for older LLVM.

This reverts commit da579ef75e.
Fixes #53204.
r? @eddyb
2018-08-14 23:59:11 +08:00
bors
a78ae85e59 Auto merge of #53161 - michaelwoerister:cstrings, r=wesleywiser
Avoid many allocations for CStrings during codegen.

Giving in to my irrational fear of dynamic allocations. Let's see what perf says to this.
2018-08-13 11:19:07 +00: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
bjorn3
44af068388 Remove statics field from CodegenCx 2018-08-11 18:54:36 +02:00
memoryruins
0123ac12e2 [nll] librustc_codegen_llvm: remove unused mut annotation 2018-08-10 06:31:40 -04:00
memoryruins
085535bbe1 [nll] librustc_codegen_llvm: change Child signature to fix error pointed out by nll
As explained by eddyb in #53221, "An &ArchiveChild doesn't point into the archive itself, it points to an owned object that itself points to the archive, and LLVMRustArchiveMemberNew copies the ArchiveChild (whereas the current signature suggests it keeps the &ArchiveChild)."
2018-08-10 06:31:10 -04:00
memoryruins
46b818e276 [nll] librustc_codegen_llvm: enable feature(nll) for bootstrap 2018-08-10 06:28:24 -04:00
Michael Woerister
88d84b38f1 Introduce SmallCStr and use it where applicable. 2018-08-10 11:13:00 +02:00
Michael Woerister
9585c5dc1f Introduce const_cstr!() macro and use it where applicable. 2018-08-10 10:22:44 +02:00
bors
db1acaac7f Auto merge of #53073 - Mark-Simulacrum:data-structures, r=pnkfelix
Cleanup to librustc::session and related code

No functional changes, just some cleanup.

This also creates the `rustc_fs_util` crate, but I can remove that change if desired. It felt a little odd to force crates to depend on librustc for some fs utilities; and also seemed good to generally keep the size of librustc lower (for compile times); fs_util will compile in parallel with essentially the first crate since it has no dependencies beyond std.
2018-08-10 00:14:52 +00:00
Josh Stone
763e72110a rustc_codegen_llvm: Restore the closure env alloca hack for LLVM 5.
This hack was removed in #50949, but without it I found that building
`std` with full debuginfo would print many LLVM `DW_OP_LLVM_fragment`
errors, then die `LLVM ERROR: Failed to strip malformed debug info`.

It doesn't seem to be a problem for LLVM 6, so we can re-enable the hack
just for older LLVM.

This reverts commit da579ef75e.
Fixes #53204.
r? @eddyb
2018-08-09 16:35:25 -07:00
bors
8958ed6722 Auto merge of #53216 - kennytm:rollup, r=kennytm
Rollup of 15 pull requests

Successful merges:

 - #52773 (Avoid unnecessary pattern matching against Option and Result)
 - #53082 (Fix doc link (again))
 - #53094 (Automatically expand section if url id point to one of its component)
 - #53106 (atomic ordering docs)
 - #53110 (Account for --remap-path-prefix in save-analysis)
 - #53116 (NetBSD: fix signedess of char)
 - #53179 (Whitelist wasm32 simd128 target feature)
 - #53183 (Suggest comma when missing in macro call)
 - #53207 (Add individual docs for rotate_{left, right})
 - #53211 ([nll] enable feature(nll) on various crates for bootstrap)
 - #53214 ([nll] enable feature(nll) on various crates for bootstrap: part 2)
 - #53215 (Slightly refactor syntax_ext/format)
 - #53217 (inline some short functions)
 - #53219 ([nll] enable feature(nll) on various crates for bootstrap: part 3)
 - #53222 (A few cleanups for rustc_target)
2018-08-09 19:05:14 +00:00
kennytm
7f886cf12b
Rollup merge of #53179 - gnzlbg:patch-3, r=alexcrichton
Whitelist wasm32 simd128 target feature

r? @alexcrichton
2018-08-10 01:01:20 +08:00
Mark Rousskov
bd6fe1e700 Move Fingerprint to data structures 2018-08-09 10:00:25 -06:00
Mark Rousskov
dea13b4bc7 Move path2cstr to rustc_fs_util 2018-08-09 10:00:25 -06:00
Mark Rousskov
e3177c6f3f Move rustc::util::fs into separate (new) crate 2018-08-09 10:00:25 -06:00
bors
b73535f1e9 Auto merge of #53031 - michaelwoerister:cross-lto, r=alexcrichton
Apply some fixes to cross-language LTO (especially when targeting MSVC)

This PR contains a few fixes that were needed in order to get Firefox compiling with Rust/C++ cross-language ThinLTO on Windows. The commits are self-contained and should be self-explanatory.

r? @alexcrichton
2018-08-09 13:20:14 +00:00
Michael Woerister
3a70050377 Address review comments for #53031 and fix some merge fallout. 2018-08-08 13:40:23 +02:00
gnzlbg
5ce865e1c4
Add wasm32 simd128 target feature 2018-08-08 01:39:52 +02:00
Alex Crichton
7c58ab671f rustc: Tweak visibility of some lang items
This commit tweaks the linker-level visibility of some lang items that rustc
uses and defines. Notably this means that `#[panic_implementation]` and
`#[alloc_error_handler]` functions are never marked as `internal`. It's up to
the linker to eliminate these, not rustc.

Additionally `#[global_allocator]` generated symbols are no longer forced to
`Default` visibility (fully exported), but rather they're relaxed to `Hidden`
visibility). This symbols are *not* needed across DLL boundaries, only as a
local implementation detail of the compiler-injected allocator symbols, so
`Hidden` should suffice.

Closes #51342
Closes #52795
2018-08-07 08:42:38 -07:00
Michael Woerister
b27a161939 Annotate functions in LLVM with target-cpu, same as Clang does. 2018-08-07 14:48:20 +02:00
Michael Woerister
f2969ed6c3 Set 'PrepareForThinLTO' whenever doing cross-language LTO. 2018-08-07 14:48:20 +02:00
Michael Woerister
aa9eeff263 Make sure upstream object files are added to staticlibs when compiling
with ThinLTO and cross-lang-lto.

Normally, when compiling with whole-crate-graph ThinLTO, we expect
rustc's LTO step to "uplift" upstream object files/LLVM modules to
the current set of compilation artifacts. Therefore the staticlib
creation code skips this uplifting. However, when compiling with
"cross-language LTO" (i.e. defer LTO to the actual linker), the LTO
step in rustc is not performed, so we have to take care of copying
upstream object files during archive creation (like we already do
when compiling without any LTO).
2018-08-07 14:44:48 +02:00
Michael Woerister
3a3b3317d9 Fix issue around dllimport and ThinLTO as LLD runs it. 2018-08-07 14:44:48 +02:00
kennytm
35d752f130
Rollup merge of #53028 - Mark-Simulacrum:split-out-codegen, r=alexcrichton
Building librustc_codegen_llvm in a separate directory

This allows clearing it out and building it separately from the
compiler. Since it's essentially a different and separate crate this
makes sense to do, each cargo invocation should generally happen in its
own directory.

r? @alexcrichton
2018-08-07 16:55:38 +08:00
bors
11a902431b Auto merge of #51007 - AstralSorcerer:master, r=nagisa
Make globals with private linkage unnamed. Fixes #50862.

cc @oli-obk @nagisa
2018-08-07 02:12:35 +00:00
Mark Rousskov
d8e8a50cf2 Building librustc_codegen_llvm in a separate directory
This allows clearing it out and building it separately from the
compiler. Since it's essentially a different and separate crate this
makes sense to do, each cargo invocation should generally happen in its
own directory.
2018-08-06 07:00:34 -06:00
varkor
c81b95f305 Remove unnecessary feature attributes that sneaked in 2018-08-05 15:54:49 +01:00
Mark Rousskov
a9093a4dd8 Move share_generics getter onto options directly 2018-08-04 06:54:36 -06:00
Mark Rousskov
3cc4450a8a Simplify some handling of target_pointer_width 2018-08-04 06:54:36 -06:00
Mark Rousskov
2bc71971e5 Normalize DebugInfoLevel to standard style 2018-08-04 06:54:34 -06:00
Mark Rousskov
442a4744e3 Normalize EntryFnType variants to standard style 2018-08-04 06:54:12 -06:00
Mark Rousskov
b3267dcb31 Normalize variants of Passes to standard style 2018-08-04 06:53:15 -06:00
Mark Rousskov
2a9344206b Normalize variants of CrateType to standard style
This is a clippy-breaking change.
2018-08-04 06:53:15 -06:00
bors
59fa6bd6c1 Auto merge of #52712 - oli-obk:const_eval_cleanups, r=RalfJung
Reintroduce `Undef` and properly check constant value sizes

r? @RalfJung

cc @eddyb

basically all kinds of silent failures that never occurred are assertions now
2018-08-03 14:28:12 +00:00
bors
88e0ff14a8 Auto merge of #52887 - yurydelendik:disable-lld-symbols, r=alexcrichton
Disable debug sections when optimization flags is set for LLD.

Currently LLD does not error when optimization is set and debugging information sections are present. (See discussion at https://reviews.llvm.org/D47901)

Using `--strip-debug` along with the `-O` option.
2018-08-03 12:22:17 +00:00
Wesley Wiser
45482c6f99 Basic profiling 2018-08-02 18:57:24 -04:00
Oliver Schneider
37e18e7a30 Second field of ScalarPair can be undef in some cases 2018-08-02 13:16:53 +02:00
Pietro Albini
42243f82f4
Rollup merge of #52799 - Mark-Simulacrum:attr-id-bitvecs, r=michaelwoerister
Use BitVector for global sets of AttrId
2018-08-01 21:46:23 +02:00
Oliver Schneider
c6c06854c0 Reintroduce Undef and properly check constant value sizes 2018-08-01 15:29:35 +02:00
Mark Rousskov
9bc4fbb10a Split out growth functionality into BitVector type 2018-08-01 06:50:40 -06:00
Colin Pronovost
3da7c65e92 Make sure we prepare for thin LTO whenever we are emitting bitcode
Emitting LLVM bitcode uses ThinLTOBuffers, so we need to prepare for
thin LTO or we will likely cause errors in LLVM.
2018-08-01 00:27:25 -04:00
Colin Pronovost
02190f397e Make globals with private linkage unnamed. Fixes #50862. 2018-07-31 23:45:18 -04:00
Alex Crichton
f0bceba669 rustc: Handle linker diagnostic from LLVM
Previously linker diagnostic were being hidden when two modules were linked
together but failed to link. This commit fixes the situation by ensuring that we
have a diagnostic handler installed and also adds support for handling linker
diagnostics.
2018-07-31 10:47:27 -07:00
Yury Delendik
e9509d78bd Disable debug sections when optimization flags is set for LLD. 2018-07-30 19:58:26 -05:00
Irina Popa
69ed6b928c rustc_codegen_llvm: fix ownership of DIBuilder. 2018-07-30 20:35:14 +03:00
Irina Popa
54c98ab0dd rustc_codegen_llvm: fix ownership of Builder. 2018-07-30 20:35:11 +03:00
Irina Popa
265f2fa4de rustc_codegen_llvm: fix tidy errors. 2018-07-30 20:35:08 +03:00
Irina Popa
ba006440ee rustc_codegen_llvm: use safe references for ThinLTOData. 2018-07-30 20:34:51 +03:00