Skip to content

Commit faeede3

Browse files
committed
Merge branch 'sync_from_rust'
2 parents ab7777f + 02b0f3b commit faeede3

27 files changed

+80
-99
lines changed

build_system/abi_cafe.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::path::{Dirs, RelPath};
22
use crate::prepare::GitRepo;
3-
use crate::utils::{spawn_and_wait, CargoProject, Compiler};
4-
use crate::{build_sysroot, CodegenBackend, SysrootKind};
3+
use crate::utils::{CargoProject, Compiler, spawn_and_wait};
4+
use crate::{CodegenBackend, SysrootKind, build_sysroot};
55

66
static ABI_CAFE_REPO: GitRepo = GitRepo::github(
77
"Gankra",

build_system/bench.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::process::Command;
66
use crate::path::{Dirs, RelPath};
77
use crate::prepare::GitRepo;
88
use crate::rustc_info::get_file_name;
9-
use crate::utils::{spawn_and_wait, Compiler};
9+
use crate::utils::{Compiler, spawn_and_wait};
1010

1111
static SIMPLE_RAYTRACER_REPO: GitRepo = GitRepo::github(
1212
"ebobby",

build_system/build_sysroot.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ use crate::path::{Dirs, RelPath};
66
use crate::prepare::apply_patches;
77
use crate::rustc_info::{get_default_sysroot, get_file_name};
88
use crate::utils::{
9-
ensure_empty_dir, spawn_and_wait, try_hard_link, CargoProject, Compiler, LogGroup,
9+
CargoProject, Compiler, LogGroup, ensure_empty_dir, spawn_and_wait, try_hard_link,
1010
};
11-
use crate::{config, CodegenBackend, SysrootKind};
11+
use crate::{CodegenBackend, SysrootKind, config};
1212

1313
pub(crate) fn build_sysroot(
1414
dirs: &Dirs,

build_system/tests.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ use std::path::PathBuf;
44
use std::process::Command;
55

66
use crate::path::{Dirs, RelPath};
7-
use crate::prepare::{apply_patches, GitRepo};
7+
use crate::prepare::{GitRepo, apply_patches};
88
use crate::rustc_info::get_default_sysroot;
99
use crate::shared_utils::rustflags_from_env;
10-
use crate::utils::{spawn_and_wait, CargoProject, Compiler, LogGroup};
11-
use crate::{build_sysroot, config, CodegenBackend, SysrootKind};
10+
use crate::utils::{CargoProject, Compiler, LogGroup, spawn_and_wait};
11+
use crate::{CodegenBackend, SysrootKind, build_sysroot, config};
1212

1313
static BUILD_EXAMPLE_OUT_DIR: RelPath = RelPath::BUILD.join("example");
1414

example/std_example.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,9 @@ unsafe fn test_simd() {
238238
let (zero0, zero1) = std::mem::transmute::<_, (u64, u64)>(x);
239239
assert_eq!((zero0, zero1), (0, 0));
240240
assert_eq!(std::mem::transmute::<_, [u16; 8]>(or), [7, 7, 7, 7, 7, 7, 7, 7]);
241-
assert_eq!(
242-
std::mem::transmute::<_, [u16; 8]>(cmp_eq),
243-
[0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff]
244-
);
241+
assert_eq!(std::mem::transmute::<_, [u16; 8]>(cmp_eq), [
242+
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff
243+
]);
245244
assert_eq!(std::mem::transmute::<_, [u16; 8]>(cmp_lt), [0, 0, 0, 0, 0, 0, 0, 0]);
246245

247246
test_mm_slli_si128();

src/abi/mod.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ use cranelift_module::ModuleError;
1313
use rustc_codegen_ssa::base::is_call_from_compiler_builtins_to_upstream_monomorphization;
1414
use rustc_codegen_ssa::errors::CompilerBuiltinsCannotCall;
1515
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
16+
use rustc_middle::ty::TypeVisitableExt;
1617
use rustc_middle::ty::layout::FnAbiOf;
1718
use rustc_middle::ty::print::with_no_trimmed_paths;
18-
use rustc_middle::ty::TypeVisitableExt;
1919
use rustc_session::Session;
2020
use rustc_span::source_map::Spanned;
2121
use rustc_target::abi::call::{Conv, FnAbi, PassMode};
@@ -61,6 +61,9 @@ pub(crate) fn conv_to_call_conv(sess: &Session, c: Conv, default_call_conv: Call
6161
Conv::CCmseNonSecureCall => {
6262
sess.dcx().fatal("C-cmse-nonsecure-call call conv is not yet implemented");
6363
}
64+
Conv::CCmseNonSecureEntry => {
65+
sess.dcx().fatal("C-cmse-nonsecure-entry call conv is not yet implemented");
66+
}
6467

6568
Conv::Msp430Intr | Conv::PtxKernel | Conv::AvrInterrupt | Conv::AvrNonBlockingInterrupt => {
6669
unreachable!("tried to use {c:?} call conv which only exists on an unsupported target");

src/abi/pass_mode.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use cranelift_codegen::ir::{ArgumentExtension, ArgumentPurpose};
44
use rustc_target::abi::call::{
55
ArgAbi, ArgAttributes, ArgExtension as RustcArgExtension, CastTarget, PassMode, Reg, RegKind,
66
};
7-
use smallvec::{smallvec, SmallVec};
7+
use smallvec::{SmallVec, smallvec};
88

99
use crate::prelude::*;
1010
use crate::value_and_place::assert_assignable;

src/abi/returning.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Return value handling
22
33
use rustc_target::abi::call::{ArgAbi, PassMode};
4-
use smallvec::{smallvec, SmallVec};
4+
use smallvec::{SmallVec, smallvec};
55

66
use crate::prelude::*;
77

src/allocator.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Adapted from rustc
33

44
use rustc_ast::expand::allocator::{
5-
alloc_error_handler_name, default_fn_name, global_fn_name, AllocatorKind, AllocatorTy,
6-
ALLOCATOR_METHODS, NO_ALLOC_SHIM_IS_UNSTABLE,
5+
ALLOCATOR_METHODS, AllocatorKind, AllocatorTy, NO_ALLOC_SHIM_IS_UNSTABLE,
6+
alloc_error_handler_name, default_fn_name, global_fn_name,
77
};
88
use rustc_codegen_ssa::base::allocator_kind_for_codegen;
99
use rustc_session::config::OomStrategy;

src/base.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
//! Codegen of a single function
22
3-
use cranelift_codegen::ir::UserFuncName;
43
use cranelift_codegen::CodegenError;
4+
use cranelift_codegen::ir::UserFuncName;
55
use cranelift_frontend::{FunctionBuilder, FunctionBuilderContext};
66
use cranelift_module::ModuleError;
77
use rustc_ast::InlineAsmOptions;
88
use rustc_codegen_ssa::base::is_call_from_compiler_builtins_to_upstream_monomorphization;
99
use rustc_index::IndexVec;
1010
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
11+
use rustc_middle::ty::TypeVisitableExt;
1112
use rustc_middle::ty::adjustment::PointerCoercion;
1213
use rustc_middle::ty::layout::FnAbiOf;
1314
use rustc_middle::ty::print::with_no_trimmed_paths;
14-
use rustc_middle::ty::TypeVisitableExt;
1515

1616
use crate::constant::ConstantCx;
1717
use crate::debuginfo::{FunctionDebugContext, TypeDebugContext};

src/common.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use cranelift_codegen::isa::TargetFrontendConfig;
22
use cranelift_frontend::{FunctionBuilder, FunctionBuilderContext};
33
use rustc_index::IndexVec;
4+
use rustc_middle::ty::TypeFoldable;
45
use rustc_middle::ty::layout::{
56
self, FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOfHelpers,
67
};
7-
use rustc_middle::ty::TypeFoldable;
88
use rustc_span::source_map::Spanned;
99
use rustc_target::abi::call::FnAbi;
1010
use rustc_target::abi::{Float, Integer, Primitive};

src/constant.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::cmp::Ordering;
55
use cranelift_module::*;
66
use rustc_data_structures::fx::FxHashSet;
77
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
8-
use rustc_middle::mir::interpret::{read_target_uint, AllocId, GlobalAlloc, Scalar};
8+
use rustc_middle::mir::interpret::{AllocId, GlobalAlloc, Scalar, read_target_uint};
99
use rustc_middle::ty::{Binder, ExistentialTraitRef, ScalarInt};
1010

1111
use crate::prelude::*;

src/debuginfo/emit.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use gimli::write::{Address, AttributeValue, EndianVec, Result, Sections, Writer}
66
use gimli::{RunTimeEndian, SectionId};
77
use rustc_data_structures::fx::FxHashMap;
88

9-
use super::object::WriteDebugInfo;
109
use super::DebugContext;
10+
use super::object::WriteDebugInfo;
1111

1212
pub(super) fn address_for_func(func_id: FuncId) -> Address {
1313
let symbol = func_id.as_u32();

src/debuginfo/line_info.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
use std::ffi::OsStr;
44
use std::path::{Component, Path};
55

6-
use cranelift_codegen::binemit::CodeOffset;
76
use cranelift_codegen::MachSrcLoc;
7+
use cranelift_codegen::binemit::CodeOffset;
88
use gimli::write::{AttributeValue, FileId, FileInfo, LineProgram, LineString, LineStringTable};
99
use rustc_span::{
10-
hygiene, FileName, Pos, SourceFile, SourceFileAndLine, SourceFileHash, SourceFileHashAlgorithm,
10+
FileName, Pos, SourceFile, SourceFileAndLine, SourceFileHash, SourceFileHashAlgorithm, hygiene,
1111
};
1212

13-
use crate::debuginfo::emit::address_for_func;
1413
use crate::debuginfo::FunctionDebugContext;
14+
use crate::debuginfo::emit::address_for_func;
1515
use crate::prelude::*;
1616

1717
// OPTIMIZATION: It is cheaper to do this in one pass than using `.parent()` and `.file_name()`.

src/debuginfo/object.rs

+9-12
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,16 @@ impl WriteDebugInfo for ObjectProduct {
7373
}
7474
};
7575
self.object
76-
.add_relocation(
77-
from.0,
78-
Relocation {
79-
offset: u64::from(reloc.offset),
80-
symbol,
81-
flags: RelocationFlags::Generic {
82-
kind: reloc.kind,
83-
encoding: RelocationEncoding::Generic,
84-
size: reloc.size * 8,
85-
},
86-
addend: i64::try_from(symbol_offset).unwrap() + reloc.addend,
76+
.add_relocation(from.0, Relocation {
77+
offset: u64::from(reloc.offset),
78+
symbol,
79+
flags: RelocationFlags::Generic {
80+
kind: reloc.kind,
81+
encoding: RelocationEncoding::Generic,
82+
size: reloc.size * 8,
8783
},
88-
)
84+
addend: i64::try_from(symbol_offset).unwrap() + reloc.addend,
85+
})
8986
.unwrap();
9087
}
9188
}

src/debuginfo/types.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use rustc_data_structures::fx::FxHashMap;
66
use rustc_middle::ty::layout::LayoutOf;
77
use rustc_middle::ty::{self, Ty, TyCtxt};
88

9-
use crate::{has_ptr_meta, DebugContext, RevealAllLayoutCx};
9+
use crate::{DebugContext, RevealAllLayoutCx, has_ptr_meta};
1010

1111
#[derive(Default)]
1212
pub(crate) struct TypeDebugContext<'tcx> {

src/debuginfo/unwind.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
//! Unwind info generation (`.eh_frame`)
22
33
use cranelift_codegen::ir::Endianness;
4-
use cranelift_codegen::isa::unwind::UnwindInfo;
54
use cranelift_codegen::isa::TargetIsa;
5+
use cranelift_codegen::isa::unwind::UnwindInfo;
66
use cranelift_object::ObjectProduct;
7-
use gimli::write::{CieId, EhFrame, FrameTable, Section};
87
use gimli::RunTimeEndian;
8+
use gimli::write::{CieId, EhFrame, FrameTable, Section};
99

1010
use super::emit::address_for_func;
1111
use super::object::WriteDebugInfo;

src/driver/aot.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,24 @@ use rustc_codegen_ssa::back::link::ensure_removed;
1212
use rustc_codegen_ssa::back::metadata::create_compressed_metadata_file;
1313
use rustc_codegen_ssa::base::determine_cgu_reuse;
1414
use rustc_codegen_ssa::{
15-
errors as ssa_errors, CodegenResults, CompiledModule, CrateInfo, ModuleKind,
15+
CodegenResults, CompiledModule, CrateInfo, ModuleKind, errors as ssa_errors,
1616
};
1717
use rustc_data_structures::profiling::SelfProfilerRef;
1818
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
19-
use rustc_data_structures::sync::{par_map, IntoDynSyncSend};
20-
use rustc_metadata::fs::copy_to_stdout;
19+
use rustc_data_structures::sync::{IntoDynSyncSend, par_map};
2120
use rustc_metadata::EncodedMetadata;
21+
use rustc_metadata::fs::copy_to_stdout;
2222
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
2323
use rustc_middle::mir::mono::{CodegenUnit, MonoItem};
24-
use rustc_session::config::{DebugInfo, OutFileName, OutputFilenames, OutputType};
2524
use rustc_session::Session;
25+
use rustc_session::config::{DebugInfo, OutFileName, OutputFilenames, OutputType};
2626

27+
use crate::BackendConfig;
2728
use crate::concurrency_limiter::{ConcurrencyLimiter, ConcurrencyLimiterToken};
2829
use crate::debuginfo::TypeDebugContext;
2930
use crate::global_asm::GlobalAsmConfig;
3031
use crate::prelude::*;
3132
use crate::unwind_module::UnwindModule;
32-
use crate::BackendConfig;
3333

3434
struct ModuleCodegenResult {
3535
module_regular: CompiledModule,

src/driver/jit.rs

+6-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
use std::cell::RefCell;
55
use std::ffi::CString;
66
use std::os::raw::{c_char, c_int};
7-
use std::sync::{mpsc, Mutex, OnceLock};
7+
use std::sync::{Mutex, OnceLock, mpsc};
88

99
use cranelift_frontend::{FunctionBuilder, FunctionBuilderContext};
1010
use cranelift_jit::{JITBuilder, JITModule};
@@ -359,15 +359,11 @@ fn codegen_shim<'tcx>(
359359
let instance_ptr = Box::into_raw(Box::new(inst));
360360

361361
let jit_fn = module
362-
.declare_function(
363-
"__clif_jit_fn",
364-
Linkage::Import,
365-
&Signature {
366-
call_conv: module.target_config().default_call_conv,
367-
params: vec![AbiParam::new(pointer_type), AbiParam::new(pointer_type)],
368-
returns: vec![AbiParam::new(pointer_type)],
369-
},
370-
)
362+
.declare_function("__clif_jit_fn", Linkage::Import, &Signature {
363+
call_conv: module.target_config().default_call_conv,
364+
params: vec![AbiParam::new(pointer_type), AbiParam::new(pointer_type)],
365+
returns: vec![AbiParam::new(pointer_type)],
366+
})
371367
.unwrap();
372368

373369
let context = cached_context;

src/inline_asm.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -869,15 +869,11 @@ fn call_inline_asm<'tcx>(
869869

870870
let inline_asm_func = fx
871871
.module
872-
.declare_function(
873-
asm_name,
874-
Linkage::Import,
875-
&Signature {
876-
call_conv: CallConv::SystemV,
877-
params: vec![AbiParam::new(fx.pointer_type)],
878-
returns: vec![],
879-
},
880-
)
872+
.declare_function(asm_name, Linkage::Import, &Signature {
873+
call_conv: CallConv::SystemV,
874+
params: vec![AbiParam::new(fx.pointer_type)],
875+
returns: vec![],
876+
})
881877
.unwrap();
882878
let inline_asm_func = fx.module.declare_func_in_func(inline_asm_func, fx.bcx.func);
883879
if fx.clif_comments.enabled() {

src/intrinsics/llvm_x86.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use rustc_ast::ast::{InlineAsmOptions, InlineAsmTemplatePiece};
44
use rustc_target::asm::*;
55

6-
use crate::inline_asm::{codegen_inline_asm_inner, CInlineAsmOperand};
6+
use crate::inline_asm::{CInlineAsmOperand, codegen_inline_asm_inner};
77
use crate::intrinsics::*;
88
use crate::prelude::*;
99

src/intrinsics/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ mod simd;
1919

2020
use cranelift_codegen::ir::AtomicRmwOp;
2121
use rustc_middle::ty;
22+
use rustc_middle::ty::GenericArgsRef;
2223
use rustc_middle::ty::layout::{HasParamEnv, ValidityRequirement};
2324
use rustc_middle::ty::print::{with_no_trimmed_paths, with_no_visible_paths};
24-
use rustc_middle::ty::GenericArgsRef;
2525
use rustc_span::source_map::Spanned;
26-
use rustc_span::symbol::{sym, Symbol};
26+
use rustc_span::symbol::{Symbol, sym};
2727

2828
pub(crate) use self::llvm::codegen_llvm_intrinsic_call;
2929
use crate::cast::clif_intcast;

src/intrinsics/simd.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -561,12 +561,9 @@ pub(super) fn codegen_simd_intrinsic_call<'tcx>(
561561
(sym::simd_round, types::F64) => "round",
562562
_ => unreachable!("{:?}", intrinsic),
563563
};
564-
fx.lib_call(
565-
name,
566-
vec![AbiParam::new(lane_ty)],
567-
vec![AbiParam::new(lane_ty)],
568-
&[lane],
569-
)[0]
564+
fx.lib_call(name, vec![AbiParam::new(lane_ty)], vec![AbiParam::new(lane_ty)], &[
565+
lane,
566+
])[0]
570567
});
571568
}
572569

src/lib.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ use std::sync::Arc;
3838

3939
use cranelift_codegen::isa::TargetIsa;
4040
use cranelift_codegen::settings::{self, Configurable};
41-
use rustc_codegen_ssa::traits::CodegenBackend;
4241
use rustc_codegen_ssa::CodegenResults;
42+
use rustc_codegen_ssa::traits::CodegenBackend;
4343
use rustc_data_structures::profiling::SelfProfilerRef;
4444
use rustc_errors::ErrorGuaranteed;
4545
use rustc_metadata::EncodedMetadata;
4646
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
47-
use rustc_session::config::OutputFilenames;
4847
use rustc_session::Session;
49-
use rustc_span::{sym, Symbol};
48+
use rustc_session::config::OutputFilenames;
49+
use rustc_span::{Symbol, sym};
5050

5151
pub use crate::config::*;
5252
use crate::prelude::*;
@@ -83,13 +83,13 @@ mod value_and_place;
8383
mod vtable;
8484

8585
mod prelude {
86+
pub(crate) use cranelift_codegen::Context;
8687
pub(crate) use cranelift_codegen::ir::condcodes::{FloatCC, IntCC};
8788
pub(crate) use cranelift_codegen::ir::function::Function;
8889
pub(crate) use cranelift_codegen::ir::{
89-
types, AbiParam, Block, FuncRef, Inst, InstBuilder, MemFlags, Signature, SourceLoc,
90-
StackSlot, StackSlotData, StackSlotKind, TrapCode, Type, Value,
90+
AbiParam, Block, FuncRef, Inst, InstBuilder, MemFlags, Signature, SourceLoc, StackSlot,
91+
StackSlotData, StackSlotKind, TrapCode, Type, Value, types,
9192
};
92-
pub(crate) use cranelift_codegen::Context;
9393
pub(crate) use cranelift_module::{self, DataDescription, FuncId, Linkage, Module};
9494
pub(crate) use rustc_data_structures::fx::{FxHashMap, FxIndexMap};
9595
pub(crate) use rustc_hir::def_id::{DefId, LOCAL_CRATE};
@@ -100,7 +100,7 @@ mod prelude {
100100
self, FloatTy, Instance, InstanceKind, IntTy, ParamEnv, Ty, TyCtxt, UintTy,
101101
};
102102
pub(crate) use rustc_span::Span;
103-
pub(crate) use rustc_target::abi::{Abi, FieldIdx, Scalar, Size, VariantIdx, FIRST_VARIANT};
103+
pub(crate) use rustc_target::abi::{Abi, FIRST_VARIANT, FieldIdx, Scalar, Size, VariantIdx};
104104

105105
pub(crate) use crate::abi::*;
106106
pub(crate) use crate::base::{codegen_operand, codegen_place};

0 commit comments

Comments
 (0)