Skip to Content.
Sympa Menu

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

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 (3ae0eae7ab1e671fa543e69c2ff3ac1b4eb34570)
  • Date: Wed, 7 Sep 2022 18:29:13 +0000

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

devel/rust/HISTORY | 9 +-
devel/rust/patches/0009-llvm-15.patch | 112
++++++++++++++++++++++++++++++++++
2 files changed, 118 insertions(+), 3 deletions(-)

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

devel/rust: added patch for building with llvm 15

diff --git a/devel/rust/HISTORY b/devel/rust/HISTORY
index e82c6bf..4cf05f9 100644
--- a/devel/rust/HISTORY
+++ b/devel/rust/HISTORY
@@ -1,7 +1,10 @@
+2022-09-07 Pavel Vinogradov <public AT sourcemage.org>
+ * patches/0009-llvm-15.patch: added for building with llvm 15
+
2022-08-13 Florian Franzmann <bwlf AT bandrate.org>
- * BUILD: export CFLAGS and CXXFLAGS so they are actually used by the
- build system
-
+ * BUILD: export CFLAGS and CXXFLAGS so they are actually used by the
+ build system
+
2022-08-12 Pavel Vinogradov <public AT sourcemage.org>
* DETAILS: version 1.63.0

diff --git a/devel/rust/patches/0009-llvm-15.patch
b/devel/rust/patches/0009-llvm-15.patch
new file mode 100644
index 0000000..cc28b4d
--- /dev/null
+++ b/devel/rust/patches/0009-llvm-15.patch
@@ -0,0 +1,112 @@
+From fe02ee8be97fc94166e3920d16d550bd6994fabd Mon Sep 17 00:00:00 2001
+From: Krasimir Georgiev <krasimir AT google.com>
+Date: Tue, 28 Jun 2022 14:08:35 +0000
+Subject: [PATCH] llvm-wrapper: adapt for an LLVM API change
+
+This adapts llvm-wrapper for
+https://github.com/llvm/llvm-project/commit/dacfa24f75c328ae30b710ecadaa18e4ba10cdc6,
+which removed ASanGlobalsMetadataAnalysis.
+---
+ compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
+index 38fddbdba54dd..0f4973ebf7129 100644
+--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
++++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
+@@ -985,7 +985,9 @@ LLVMRustOptimizeWithNewPassManager(
+ if (SanitizerOptions->SanitizeAddress) {
+ OptimizerLastEPCallbacks.push_back(
+ [SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level)
{
++#if LLVM_VERSION_LT(15, 0)
+ MPM.addPass(RequireAnalysisPass<ASanGlobalsMetadataAnalysis,
Module>());
++#endif
+ #if LLVM_VERSION_GE(14, 0)
+ AddressSanitizerOptions opts = AddressSanitizerOptions{
+ /*CompileKernel=*/false,
+From a89d014a211386f2b0ead0d309a588c625d45514 Mon Sep 17 00:00:00 2001
+From: Krasimir Georgiev <krasimir AT google.com>
+Date: Tue, 12 Jul 2022 15:36:28 +0000
+Subject: [PATCH] llvm-wrapper: adapt for LLVM API change
+
+---
+ compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
+index 8c5b4e2dc96f9..7ac3157e7a1de 100644
+--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
++++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
+@@ -411,8 +411,14 @@ LLVMRustInlineAsm(LLVMTypeRef Ty, char *AsmString,
size_t AsmStringLen,
+
+ extern "C" bool LLVMRustInlineAsmVerify(LLVMTypeRef Ty, char *Constraints,
+ size_t ConstraintsLen) {
++#if LLVM_VERSION_LT(15, 0)
+ return InlineAsm::Verify(unwrap<FunctionType>(Ty),
+ StringRef(Constraints, ConstraintsLen));
++#else
++ // llvm::Error converts to true if it is an error.
++ return !llvm::errorToBool(InlineAsm::verify(
++ unwrap<FunctionType>(Ty), StringRef(Constraints, ConstraintsLen)));
++#endif
+ }
+
+ extern "C" void LLVMRustAppendModuleInlineAsm(LLVMModuleRef M, const char
*Asm,
+From a3a88c73f104d11849a31ebbf1c4ff4b10fc1e8d Mon Sep 17 00:00:00 2001
+From: Krasimir Georgiev <krasimir AT google.com>
+Date: Wed, 29 Jun 2022 14:00:40 +0000
+Subject: [PATCH] llvm-wrapper: adapt for LLVMConstExtractValue removal
+
+---
+ compiler/rustc_codegen_llvm/src/common.rs | 3 +--
+ compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 6 +-----
+ compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 8 ++++++++
+ 3 files changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/compiler/rustc_codegen_llvm/src/common.rs
b/compiler/rustc_codegen_llvm/src/common.rs
+index b69d7a000ee9a..d37aadeb523a1 100644
+--- a/compiler/rustc_codegen_llvm/src/common.rs
++++ b/compiler/rustc_codegen_llvm/src/common.rs
+@@ -109,8 +109,7 @@ impl<'ll> CodegenCx<'ll, '_> {
+ pub fn const_get_elt(&self, v: &'ll Value, idx: u64) -> &'ll Value {
+ unsafe {
+ assert_eq!(idx as c_uint as u64, idx);
+- let us = &[idx as c_uint];
+- let r = llvm::LLVMConstExtractValue(v, us.as_ptr(), us.len() as
c_uint);
++ let r = llvm::LLVMGetAggregateElement(v, idx as
c_uint).unwrap();
+
+ debug!("const_get_elt(v={:?}, idx={}, r={:?})", v, idx, r);
+
+diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
+index b831423994f24..d92d9d96fe2ce 100644
+--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
++++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
+@@ -1134,11 +1134,7 @@ extern "C" {
+ pub fn LLVMConstIntToPtr<'a>(ConstantVal: &'a Value, ToType: &'a Type)
-> &'a Value;
+ pub fn LLVMConstBitCast<'a>(ConstantVal: &'a Value, ToType: &'a Type)
-> &'a Value;
+ pub fn LLVMConstPointerCast<'a>(ConstantVal: &'a Value, ToType: &'a
Type) -> &'a Value;
+- pub fn LLVMConstExtractValue(
+- AggConstant: &Value,
+- IdxList: *const c_uint,
+- NumIdx: c_uint,
+- ) -> &Value;
++ pub fn LLVMGetAggregateElement(ConstantVal: &Value, Idx: c_uint) ->
Option<&Value>;
+
+ // Operations on global variables, functions, and aliases (globals)
+ pub fn LLVMIsDeclaration(Global: &Value) -> Bool;
+diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
+index a52d534024206..8c5b4e2dc96f9 100644
+--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
++++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
+@@ -1865,3 +1865,11 @@ extern "C" void LLVMRustGetMangledName(LLVMValueRef
V, RustStringRef Str) {
+ GlobalValue *GV = unwrap<GlobalValue>(V);
+ Mangler().getNameWithPrefix(OS, GV, true);
+ }
++
++// LLVMGetAggregateElement was added in LLVM 15. For earlier LLVM versions
just
++// use its implementation.
++#if LLVM_VERSION_LT(15, 0)
++extern "C" LLVMValueRef LLVMGetAggregateElement(LLVMValueRef C, unsigned
Idx) {
++ return wrap(unwrap<Constant>(C)->getAggregateElement(Idx));
++}
++#endif



  • [SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (3ae0eae7ab1e671fa543e69c2ff3ac1b4eb34570), Pavel Vinogradov, 09/07/2022

Archive powered by MHonArc 2.6.24.

Top of Page