cg_gcc: Factor out rustc_target::abi
This commit is contained in:
parent
b3beb4efc7
commit
d92aee556d
4 changed files with 12 additions and 8 deletions
|
@ -7,6 +7,8 @@ use gccjit::{
|
||||||
BinaryOp, Block, ComparisonOp, Context, Function, LValue, Location, RValue, ToRValue, Type,
|
BinaryOp, Block, ComparisonOp, Context, Function, LValue, Location, RValue, ToRValue, Type,
|
||||||
UnaryOp,
|
UnaryOp,
|
||||||
};
|
};
|
||||||
|
use rustc_abi as abi;
|
||||||
|
use rustc_abi::{Align, HasDataLayout, Size, TargetDataLayout, WrappingRange};
|
||||||
use rustc_apfloat::{Float, Round, Status, ieee};
|
use rustc_apfloat::{Float, Round, Status, ieee};
|
||||||
use rustc_codegen_ssa::MemFlags;
|
use rustc_codegen_ssa::MemFlags;
|
||||||
use rustc_codegen_ssa::common::{
|
use rustc_codegen_ssa::common::{
|
||||||
|
@ -28,7 +30,6 @@ use rustc_middle::ty::{Instance, ParamEnv, Ty, TyCtxt};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_span::def_id::DefId;
|
use rustc_span::def_id::DefId;
|
||||||
use rustc_target::abi::call::FnAbi;
|
use rustc_target::abi::call::FnAbi;
|
||||||
use rustc_target::abi::{self, Align, HasDataLayout, Size, TargetDataLayout, WrappingRange};
|
|
||||||
use rustc_target::spec::{HasTargetSpec, HasWasmCAbiOpt, Target, WasmCAbi};
|
use rustc_target::spec::{HasTargetSpec, HasWasmCAbiOpt, Target, WasmCAbi};
|
||||||
|
|
||||||
use crate::common::{SignType, TypeReflection, type_is_pointer};
|
use crate::common::{SignType, TypeReflection, type_is_pointer};
|
||||||
|
@ -998,12 +999,12 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
|
||||||
) {
|
) {
|
||||||
let vr = scalar.valid_range(bx);
|
let vr = scalar.valid_range(bx);
|
||||||
match scalar.primitive() {
|
match scalar.primitive() {
|
||||||
abi::Int(..) => {
|
abi::Primitive::Int(..) => {
|
||||||
if !scalar.is_always_valid(bx) {
|
if !scalar.is_always_valid(bx) {
|
||||||
bx.range_metadata(load, vr);
|
bx.range_metadata(load, vr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
abi::Pointer(_) if vr.start < vr.end && !vr.contains(0) => {
|
abi::Primitive::Pointer(_) if vr.start < vr.end && !vr.contains(0) => {
|
||||||
bx.nonnull_metadata(load);
|
bx.nonnull_metadata(load);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
use gccjit::{LValue, RValue, ToRValue, Type};
|
use gccjit::{LValue, RValue, ToRValue, Type};
|
||||||
|
use rustc_abi as abi;
|
||||||
|
use rustc_abi::HasDataLayout;
|
||||||
|
use rustc_abi::Primitive::Pointer;
|
||||||
use rustc_codegen_ssa::traits::{
|
use rustc_codegen_ssa::traits::{
|
||||||
BaseTypeCodegenMethods, ConstCodegenMethods, MiscCodegenMethods, StaticCodegenMethods,
|
BaseTypeCodegenMethods, ConstCodegenMethods, MiscCodegenMethods, StaticCodegenMethods,
|
||||||
};
|
};
|
||||||
use rustc_middle::mir::Mutability;
|
use rustc_middle::mir::Mutability;
|
||||||
use rustc_middle::mir::interpret::{ConstAllocation, GlobalAlloc, Scalar};
|
use rustc_middle::mir::interpret::{ConstAllocation, GlobalAlloc, Scalar};
|
||||||
use rustc_middle::ty::layout::LayoutOf;
|
use rustc_middle::ty::layout::LayoutOf;
|
||||||
use rustc_target::abi::{self, HasDataLayout, Pointer};
|
|
||||||
|
|
||||||
use crate::consts::const_alloc_to_gcc;
|
use crate::consts::const_alloc_to_gcc;
|
||||||
use crate::context::CodegenCx;
|
use crate::context::CodegenCx;
|
||||||
|
|
|
@ -32,6 +32,7 @@ extern crate tempfile;
|
||||||
extern crate tracing;
|
extern crate tracing;
|
||||||
|
|
||||||
// The rustc crates we need
|
// The rustc crates we need
|
||||||
|
extern crate rustc_abi;
|
||||||
extern crate rustc_apfloat;
|
extern crate rustc_apfloat;
|
||||||
extern crate rustc_ast;
|
extern crate rustc_ast;
|
||||||
extern crate rustc_attr;
|
extern crate rustc_attr;
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
|
|
||||||
use gccjit::{Struct, Type};
|
use gccjit::{Struct, Type};
|
||||||
|
use rustc_abi as abi;
|
||||||
|
use rustc_abi::Primitive::*;
|
||||||
|
use rustc_abi::{Abi, FieldsShape, Integer, PointeeInfo, Size, Variants};
|
||||||
use rustc_codegen_ssa::traits::{
|
use rustc_codegen_ssa::traits::{
|
||||||
BaseTypeCodegenMethods, DerivedTypeCodegenMethods, LayoutTypeCodegenMethods,
|
BaseTypeCodegenMethods, DerivedTypeCodegenMethods, LayoutTypeCodegenMethods,
|
||||||
};
|
};
|
||||||
|
@ -8,11 +11,8 @@ use rustc_middle::bug;
|
||||||
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
|
use rustc_middle::ty::layout::{LayoutOf, TyAndLayout};
|
||||||
use rustc_middle::ty::print::with_no_trimmed_paths;
|
use rustc_middle::ty::print::with_no_trimmed_paths;
|
||||||
use rustc_middle::ty::{self, CoroutineArgsExt, Ty, TypeVisitableExt};
|
use rustc_middle::ty::{self, CoroutineArgsExt, Ty, TypeVisitableExt};
|
||||||
|
use rustc_target::abi::TyAbiInterface;
|
||||||
use rustc_target::abi::call::{CastTarget, FnAbi, Reg};
|
use rustc_target::abi::call::{CastTarget, FnAbi, Reg};
|
||||||
use rustc_target::abi::{
|
|
||||||
self, Abi, FieldsShape, Float, Int, Integer, PointeeInfo, Pointer, Size, TyAbiInterface,
|
|
||||||
Variants,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::abi::{FnAbiGcc, FnAbiGccExt, GccType};
|
use crate::abi::{FnAbiGcc, FnAbiGccExt, GccType};
|
||||||
use crate::context::CodegenCx;
|
use crate::context::CodegenCx;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue