Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (c5c6d7b3bd1ed73c13ff72e6bd1ba1cc9702ce7e)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Pavel Vinogradov <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (c5c6d7b3bd1ed73c13ff72e6bd1ba1cc9702ce7e)
  • Date: Thu, 4 Jan 2018 21:25:13 +0000

GIT changes to master grimoire by Pavel Vinogradov <public AT sourcemage.org>:

devel/rust/DETAILS |
7
devel/rust/HISTORY |
4
devel/rust/patches/0001-rustc-Fix-some-ThinLTO-internalization.patch |
211 ----------
devel/rust/patches/0002-Update-ThinLTO-for-LLVM-5.patch |
103 ----
devel/rust/patches/0003-Update-ThinLTO-internalization-for-LLVM-5.patch |
62 --
5 files changed, 7 insertions(+), 380 deletions(-)

New commits:
commit c5c6d7b3bd1ed73c13ff72e6bd1ba1cc9702ce7e
Author: Pavel Vinogradov <public AT sourcemage.org>
Commit: Pavel Vinogradov <public AT sourcemage.org>

devel/rust: version 1.23.0

diff --git a/devel/rust/DETAILS b/devel/rust/DETAILS
index 49dc679..3398f5d 100755
--- a/devel/rust/DETAILS
+++ b/devel/rust/DETAILS
@@ -1,8 +1,7 @@
SPELL=rust
- SPELLX=rustc
- VERSION=1.22.1
- SOURCE=$SPELLX-$VERSION-src.tar.gz
-SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELLX-$VERSION-src
+ VERSION=1.23.0
+ SOURCE=rustc-$VERSION-src.tar.gz
+SOURCE_DIRECTORY=$BUILD_DIRECTORY/rustc-$VERSION-src
TMPFS=off
SOURCE_URL[0]=https://static.rust-lang.org/dist/$SOURCE
SOURCE2=$SOURCE.asc
diff --git a/devel/rust/HISTORY b/devel/rust/HISTORY
index f93cd8b..7b2c85e 100644
--- a/devel/rust/HISTORY
+++ b/devel/rust/HISTORY
@@ -1,3 +1,7 @@
+2018-01-04 Pavel Vinogradov <public AT sourcemage.org>
+ * DETAILS: version 1.23.0, removed SPELLX
+ * patches/000[1-3]*.patch: removed, applied in upstream
+
2017-11-23 Pavel Vinogradov <public AT sourcemage.org>
* DETAILS: version 1.22.1
* patches/000[1-3]*.patch: added upstream fixes for LLVM 5.0
diff --git
a/devel/rust/patches/0001-rustc-Fix-some-ThinLTO-internalization.patch
b/devel/rust/patches/0001-rustc-Fix-some-ThinLTO-internalization.patch
deleted file mode 100644
index 4e08733..0000000
--- a/devel/rust/patches/0001-rustc-Fix-some-ThinLTO-internalization.patch
+++ /dev/null
@@ -1,211 +0,0 @@
-From 2e1c4cd0f51c28b8cfc003fda67f6641bb4335f2 Mon Sep 17 00:00:00 2001
-From: Alex Crichton <alex AT alexcrichton.com>
-Date: Wed, 11 Oct 2017 11:19:59 -0700
-Subject: [PATCH] rustc: Fix some ThinLTO internalization
-
-First the `addPreservedGUID` function forgot to take care of "alias"
summaries.
-I'm not 100% sure what this is but the current code now matches upstream.
Next
-the `computeDeadSymbols` return value wasn't actually being used, but it
needed
-to be used! Together these should...
-
-Closes #45195
----
- src/librustc_trans/back/lto.rs | 20
+++++++++++++++++++-
- src/librustc_trans/back/write.rs | 10 ++++++----
- src/rustllvm/PassWrapper.cpp | 13 ++++++++-----
- src/test/run-pass/thinlto/auxiliary/dylib.rs | 16 ++++++++++++++++
- .../{ => thinlto}/auxiliary/thin-lto-inlines-aux.rs | 0
- src/test/run-pass/thinlto/dylib-works.rs | 18 ++++++++++++++++++
- src/test/run-pass/{ => thinlto}/thin-lto-inlines.rs | 0
- src/test/run-pass/{ => thinlto}/thin-lto-inlines2.rs | 0
- 8 files changed, 67 insertions(+), 10 deletions(-)
- create mode 100644 src/test/run-pass/thinlto/auxiliary/dylib.rs
- rename src/test/run-pass/{ => thinlto}/auxiliary/thin-lto-inlines-aux.rs
(100%)
- create mode 100644 src/test/run-pass/thinlto/dylib-works.rs
- rename src/test/run-pass/{ => thinlto}/thin-lto-inlines.rs (100%)
- rename src/test/run-pass/{ => thinlto}/thin-lto-inlines2.rs (100%)
-
-diff --git a/src/librustc_trans/back/lto.rs b/src/librustc_trans/back/lto.rs
-index 8f75b891a3..01d3d656df 100644
---- a/src/librustc_trans/back/lto.rs
-+++ b/src/librustc_trans/back/lto.rs
-@@ -130,6 +130,7 @@ pub fn run(cgcx: &CodegenContext,
- .filter_map(symbol_filter)
- .collect::<Vec<CString>>();
- timeline.record("whitelist");
-+ info!("{} symbols to preserve in this crate", symbol_white_list.len());
-
- // If we're performing LTO for the entire crate graph, then for each of
our
- // upstream dependencies, find the corresponding rlib and load the
bitcode
-@@ -437,7 +438,24 @@ fn run_pass_manager(cgcx: &CodegenContext,
- assert!(!pass.is_null());
- llvm::LLVMRustAddPass(pm, pass);
-
-- with_llvm_pmb(llmod, config, &mut |b| {
-+ // When optimizing for LTO we don't actually pass in `-O0`, but we
force
-+ // it to always happen at least with `-O1`.
-+ //
-+ // With ThinLTO we mess around a lot with symbol visibility in a way
-+ // that will actually cause linking failures if we optimize at O0
which
-+ // notable is lacking in dead code elimination. To ensure we at
least
-+ // get some optimizations and correctly link we forcibly switch to
`-O1`
-+ // to get dead code elimination.
-+ //
-+ // Note that in general this shouldn't matter too much as you
typically
-+ // only turn on ThinLTO when you're compiling with optimizations
-+ // otherwise.
-+ let opt_level =
config.opt_level.unwrap_or(llvm::CodeGenOptLevel::None);
-+ let opt_level = match opt_level {
-+ llvm::CodeGenOptLevel::None => llvm::CodeGenOptLevel::Less,
-+ level => level,
-+ };
-+ with_llvm_pmb(llmod, config, opt_level, &mut |b| {
- if thin {
- if
!llvm::LLVMRustPassManagerBuilderPopulateThinLTOPassManager(b, pm) {
- panic!("this version of LLVM does not support ThinLTO");
-diff --git a/src/librustc_trans/back/write.rs
b/src/librustc_trans/back/write.rs
-index 9d914243ec..f7e0ad029a 100644
---- a/src/librustc_trans/back/write.rs
-+++ b/src/librustc_trans/back/write.rs
-@@ -217,7 +217,7 @@ pub struct ModuleConfig {
- passes: Vec<String>,
- /// Some(level) to optimize at a certain level, or None to run
- /// absolutely no optimizations (used for the metadata module).
-- opt_level: Option<llvm::CodeGenOptLevel>,
-+ pub opt_level: Option<llvm::CodeGenOptLevel>,
-
- /// Some(level) to optimize binary size, or None to not affect program
size.
- opt_size: Option<llvm::CodeGenOptSize>,
-@@ -507,7 +507,8 @@ unsafe fn optimize(cgcx: &CodegenContext,
- if !config.no_prepopulate_passes {
- llvm::LLVMRustAddAnalysisPasses(tm, fpm, llmod);
- llvm::LLVMRustAddAnalysisPasses(tm, mpm, llmod);
-- with_llvm_pmb(llmod, &config, &mut |b| {
-+ let opt_level =
config.opt_level.unwrap_or(llvm::CodeGenOptLevel::None);
-+ with_llvm_pmb(llmod, &config, opt_level, &mut |b| {
- llvm::LLVMPassManagerBuilderPopulateFunctionPassManager(b,
fpm);
- llvm::LLVMPassManagerBuilderPopulateModulePassManager(b,
mpm);
- })
-@@ -1842,16 +1843,17 @@ pub fn run_assembler(sess: &Session, outputs:
&OutputFilenames) {
-
- pub unsafe fn with_llvm_pmb(llmod: ModuleRef,
- config: &ModuleConfig,
-+ opt_level: llvm::CodeGenOptLevel,
- f: &mut FnMut(llvm::PassManagerBuilderRef)) {
- // Create the PassManagerBuilder for LLVM. We configure it with
- // reasonable defaults and prepare it to actually populate the pass
- // manager.
- let builder = llvm::LLVMPassManagerBuilderCreate();
-- let opt_level = config.opt_level.unwrap_or(llvm::CodeGenOptLevel::None);
- let opt_size = config.opt_size.unwrap_or(llvm::CodeGenOptSizeNone);
- let inline_threshold = config.inline_threshold;
-
-- llvm::LLVMRustConfigurePassManagerBuilder(builder, opt_level,
-+ llvm::LLVMRustConfigurePassManagerBuilder(builder,
-+ opt_level,
- config.merge_functions,
- config.vectorize_slp,
- config.vectorize_loop);
-diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
-index e37f048dd4..1287b94159 100644
---- a/src/rustllvm/PassWrapper.cpp
-+++ b/src/rustllvm/PassWrapper.cpp
-@@ -901,9 +901,7 @@ addPreservedGUID(const ModuleSummaryIndex &Index,
- }
- }
-
-- GlobalValueSummary *GVSummary = Summary.get();
-- if (isa<FunctionSummary>(GVSummary)) {
-- FunctionSummary *FS = cast<FunctionSummary>(GVSummary);
-+ if (auto *FS = dyn_cast<FunctionSummary>(Summary.get())) {
- for (auto &Call: FS->calls()) {
- if (Call.first.isGUID()) {
- addPreservedGUID(Index, Preserved, Call.first.getGUID());
-@@ -916,6 +914,10 @@ addPreservedGUID(const ModuleSummaryIndex &Index,
- addPreservedGUID(Index, Preserved, GUID);
- }
- }
-+ if (auto *AS = dyn_cast<AliasSummary>(Summary.get())) {
-+ auto GUID = AS->getAliasee().getOriginalName();
-+ addPreservedGUID(Index, Preserved, GUID);
-+ }
- }
- }
-
-@@ -963,12 +965,13 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule
*modules,
- // combined index
- //
- // This is copied from `lib/LTO/ThinLTOCodeGenerator.cpp`
-- computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols);
-+ auto DeadSymbols = computeDeadSymbols(Ret->Index,
Ret->GUIDPreservedSymbols);
- ComputeCrossModuleImport(
- Ret->Index,
- Ret->ModuleToDefinedGVSummaries,
- Ret->ImportLists,
-- Ret->ExportLists
-+ Ret->ExportLists,
-+ &DeadSymbols
- );
-
- // Resolve LinkOnce/Weak symbols, this has to be computed early be cause
it
-diff --git a/src/test/run-pass/thinlto/auxiliary/dylib.rs
b/src/test/run-pass/thinlto/auxiliary/dylib.rs
-new file mode 100644
-index 0000000000..cdb3f49cae
---- /dev/null
-+++ b/src/test/run-pass/thinlto/auxiliary/dylib.rs
-@@ -0,0 +1,16 @@
-+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+// compile-flags: -Z thinlto -C codegen-units=8
-+
-+#[inline]
-+pub fn foo(b: u8) {
-+ b.to_string();
-+}
-diff --git a/src/test/run-pass/auxiliary/thin-lto-inlines-aux.rs
b/src/test/run-pass/thinlto/auxiliary/thin-lto-inlines-aux.rs
-similarity index 100%
-rename from src/test/run-pass/auxiliary/thin-lto-inlines-aux.rs
-rename to src/test/run-pass/thinlto/auxiliary/thin-lto-inlines-aux.rs
-diff --git a/src/test/run-pass/thinlto/dylib-works.rs
b/src/test/run-pass/thinlto/dylib-works.rs
-new file mode 100644
-index 0000000000..3f54519d0d
---- /dev/null
-+++ b/src/test/run-pass/thinlto/dylib-works.rs
-@@ -0,0 +1,18 @@
-+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+// aux-build:dylib.rs
-+// min-llvm-version 4.0
-+
-+extern crate dylib;
-+
-+fn main() {
-+ dylib::foo(1);
-+}
-diff --git a/src/test/run-pass/thin-lto-inlines.rs
b/src/test/run-pass/thinlto/thin-lto-inlines.rs
-similarity index 100%
-rename from src/test/run-pass/thin-lto-inlines.rs
-rename to src/test/run-pass/thinlto/thin-lto-inlines.rs
-diff --git a/src/test/run-pass/thin-lto-inlines2.rs
b/src/test/run-pass/thinlto/thin-lto-inlines2.rs
-similarity index 100%
-rename from src/test/run-pass/thin-lto-inlines2.rs
-rename to src/test/run-pass/thinlto/thin-lto-inlines2.rs
---
-2.15.0
-
diff --git a/devel/rust/patches/0002-Update-ThinLTO-for-LLVM-5.patch
b/devel/rust/patches/0002-Update-ThinLTO-for-LLVM-5.patch
deleted file mode 100644
index 6ba1b98..0000000
--- a/devel/rust/patches/0002-Update-ThinLTO-for-LLVM-5.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From 56f5a19e4561434919ecda627c5409a3b16ba1d0 Mon Sep 17 00:00:00 2001
-From: Alex Crichton <alex AT alexcrichton.com>
-Date: Tue, 10 Oct 2017 12:29:14 -0700
-Subject: [PATCH] Update ThinLTO for LLVM 5
-
----
- src/rustllvm/PassWrapper.cpp | 39 ++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 38 insertions(+), 1 deletion(-)
-
-diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
-index 1287b94159..c7d966fcdf 100644
---- a/src/rustllvm/PassWrapper.cpp
-+++ b/src/rustllvm/PassWrapper.cpp
-@@ -26,11 +26,13 @@
- #include "llvm/Transforms/IPO/PassManagerBuilder.h"
-
- #if LLVM_VERSION_GE(4, 0)
--#include "llvm/Object/ModuleSummaryIndexObjectFile.h"
- #include "llvm/Transforms/IPO/AlwaysInliner.h"
- #include "llvm/Transforms/IPO/FunctionImport.h"
- #include "llvm/Transforms/Utils/FunctionImportUtils.h"
- #include "llvm/LTO/LTO.h"
-+#if LLVM_VERSION_LE(4, 0)
-+#include "llvm/Object/ModuleSummaryIndexObjectFile.h"
-+#endif
- #endif
-
- #include "llvm-c/Transforms/PassManagerBuilder.h"
-@@ -888,6 +890,28 @@ addPreservedGUID(const ModuleSummaryIndex &Index,
- return;
- Preserved.insert(GUID);
-
-+#if LLVM_VERSION_GE(5, 0)
-+ auto Info = Index.getValueInfo(GUID);
-+ if (!Info) {
-+ return;
-+ }
-+ for (auto &Summary : Info.getSummaryList()) {
-+ for (auto &Ref : Summary->refs()) {
-+ addPreservedGUID(Index, Preserved, Ref.getGUID());
-+ }
-+
-+ GlobalValueSummary *GVSummary = Summary.get();
-+ if (isa<FunctionSummary>(GVSummary)) {
-+ FunctionSummary *FS = cast<FunctionSummary>(GVSummary);
-+ for (auto &Call: FS->calls()) {
-+ addPreservedGUID(Index, Preserved, Call.first.getGUID());
-+ }
-+ for (auto &GUID: FS->type_tests()) {
-+ addPreservedGUID(Index, Preserved, GUID);
-+ }
-+ }
-+ }
-+#else
- auto SummaryList = Index.findGlobalValueSummaryList(GUID);
- if (SummaryList == Index.end())
- return;
-@@ -919,6 +943,7 @@ addPreservedGUID(const ModuleSummaryIndex &Index,
- addPreservedGUID(Index, Preserved, GUID);
- }
- }
-+#endif
- }
-
- // The main entry point for creating the global ThinLTO analysis. The
structure
-@@ -939,6 +964,12 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule
*modules,
-
- Ret->ModuleMap[module->identifier] = mem_buffer;
-
-+#if LLVM_VERSION_GE(5, 0)
-+ if (Error Err = readModuleSummaryIndex(mem_buffer, Ret->Index, i)) {
-+ LLVMRustSetLastError(toString(std::move(Err)).c_str());
-+ return nullptr;
-+ }
-+#else
- Expected<std::unique_ptr<object::ModuleSummaryIndexObjectFile>>
ObjOrErr =
- object::ModuleSummaryIndexObjectFile::create(mem_buffer);
- if (!ObjOrErr) {
-@@ -947,6 +978,7 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules,
- }
- auto Index = (*ObjOrErr)->takeIndex();
- Ret->Index.mergeFrom(std::move(Index), i);
-+#endif
- }
-
- // Collect for each module the list of function it defines (GUID ->
Summary)
-@@ -981,8 +1013,13 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule
*modules,
- StringMap<std::map<GlobalValue::GUID, GlobalValue::LinkageTypes>>
ResolvedODR;
- DenseMap<GlobalValue::GUID, const GlobalValueSummary *> PrevailingCopy;
- for (auto &I : Ret->Index) {
-+#if LLVM_VERSION_GE(5, 0)
-+ if (I.second.SummaryList.size() > 1)
-+ PrevailingCopy[I.first] =
getFirstDefinitionForLinker(I.second.SummaryList);
-+#else
- if (I.second.size() > 1)
- PrevailingCopy[I.first] = getFirstDefinitionForLinker(I.second);
-+#endif
- }
- auto isPrevailing = [&](GlobalValue::GUID GUID, const GlobalValueSummary
*S) {
- const auto &Prevailing = PrevailingCopy.find(GUID);
---
-2.15.0
-
diff --git
a/devel/rust/patches/0003-Update-ThinLTO-internalization-for-LLVM-5.patch
b/devel/rust/patches/0003-Update-ThinLTO-internalization-for-LLVM-5.patch
deleted file mode 100644
index 91eaeb6..0000000
--- a/devel/rust/patches/0003-Update-ThinLTO-internalization-for-LLVM-5.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 3efa00365fc13f3145b143ee41b90fb5405b334f Mon Sep 17 00:00:00 2001
-From: Tatsuyuki Ishi <ishitatsuyuki AT gmail.com>
-Date: Tue, 17 Oct 2017 14:41:56 +0900
-Subject: [PATCH] Update ThinLTO (internalization) for LLVM 5
-
-Ref:
https://github.com/llvm-mirror/llvm/commit/ccb80b9c0f60f33780e5e29bf66a87bb56968b99
----
- src/rustllvm/PassWrapper.cpp | 17 ++++++++++++++++-
- 1 file changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp
-index c7d966fcdf..b397ad1e98 100644
---- a/src/rustllvm/PassWrapper.cpp
-+++ b/src/rustllvm/PassWrapper.cpp
-@@ -902,7 +902,7 @@ addPreservedGUID(const ModuleSummaryIndex &Index,
-
- GlobalValueSummary *GVSummary = Summary.get();
- if (isa<FunctionSummary>(GVSummary)) {
-- FunctionSummary *FS = cast<FunctionSummary>(GVSummary);
-+ auto *FS = cast<FunctionSummary>(GVSummary);
- for (auto &Call: FS->calls()) {
- addPreservedGUID(Index, Preserved, Call.first.getGUID());
- }
-@@ -910,6 +910,11 @@ addPreservedGUID(const ModuleSummaryIndex &Index,
- addPreservedGUID(Index, Preserved, GUID);
- }
- }
-+ if (isa<AliasSummary>(GVSummary)) {
-+ auto *AS = cast<AliasSummary>(GVSummary);
-+ auto GUID = AS->getAliasee().getOriginalName();
-+ addPreservedGUID(Index, Preserved, GUID);
-+ }
- }
- #else
- auto SummaryList = Index.findGlobalValueSummaryList(GUID);
-@@ -997,6 +1002,15 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule
*modules,
- // combined index
- //
- // This is copied from `lib/LTO/ThinLTOCodeGenerator.cpp`
-+#if LLVM_VERSION_GE(5, 0)
-+ computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols);
-+ ComputeCrossModuleImport(
-+ Ret->Index,
-+ Ret->ModuleToDefinedGVSummaries,
-+ Ret->ImportLists,
-+ Ret->ExportLists
-+ );
-+#else
- auto DeadSymbols = computeDeadSymbols(Ret->Index,
Ret->GUIDPreservedSymbols);
- ComputeCrossModuleImport(
- Ret->Index,
-@@ -1005,6 +1019,7 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule
*modules,
- Ret->ExportLists,
- &DeadSymbols
- );
-+#endif
-
- // Resolve LinkOnce/Weak symbols, this has to be computed early be cause
it
- // impacts the caching.
---
-2.15.0
-



  • [SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (c5c6d7b3bd1ed73c13ff72e6bd1ba1cc9702ce7e), Pavel Vinogradov, 01/04/2018

Archive powered by MHonArc 2.6.24.

Top of Page