}
}
- if sized && fields.iter().any(|f| f.abi == Abi::Uninhabited) {
+ if sized && fields.iter().any(|f| f.abi.is_uninhabited()) {
abi = Abi::Uninhabited;
}
// See issue #49298 for more details on the need to leave space
// for non-ZST uninhabited data (mostly partial initialization).
let absent = |fields: &[TyLayout<'_>]| {
- let uninhabited = fields.iter().any(|f| f.abi == Abi::Uninhabited);
+ let uninhabited = fields.iter().any(|f| f.abi.is_uninhabited());
let is_zst = fields.iter().all(|f| f.is_zst());
uninhabited && is_zst
};
_ => Abi::Aggregate { sized: true },
};
- if st.iter().all(|v| v.abi == Abi::Uninhabited) {
+ if st.iter().all(|v| v.abi.is_uninhabited()) {
abi = Abi::Uninhabited;
}
let discr_type = def.repr.discr_type();
let bits = Integer::from_attr(tcx, discr_type).size().bits();
for (i, discr) in def.discriminants(tcx).enumerate() {
- if variants[i].iter().any(|f| f.abi == Abi::Uninhabited) {
+ if variants[i].iter().any(|f| f.abi.is_uninhabited()) {
continue;
}
let mut x = discr.val as i128;
}
}
- if layout_variants.iter().all(|v| v.abi == Abi::Uninhabited) {
+ if layout_variants.iter().all(|v| v.abi.is_uninhabited()) {
abi = Abi::Uninhabited;
}
}
None => {}
};
- if cx.layout_of(sig.output()).abi == ty::layout::Abi::Uninhabited {
+ if cx.layout_of(sig.output()).abi.is_uninhabited() {
flags = flags | DIFlags::FlagNoReturn;
}
use llvm;
use llvm::AttributePlace::Function;
use rustc::ty::{self, Ty};
-use rustc::ty::layout::{self, LayoutOf};
+use rustc::ty::layout::LayoutOf;
use rustc::session::config::Sanitizer;
use rustc_data_structures::small_c_str::SmallCStr;
use rustc_target::spec::PanicStrategy;
let fty = FnType::new(cx, sig, &[]);
let llfn = declare_raw_fn(cx, name, fty.llvm_cconv(), fty.llvm_type(cx));
- if cx.layout_of(sig.output()).abi == layout::Abi::Uninhabited {
+ if cx.layout_of(sig.output()).abi.is_uninhabited() {
llvm::Attribute::NoReturn.apply_llfn(Function, llfn);
}
/// Obtain the actual discriminant of a value.
pub fn codegen_get_discr(self, bx: &Builder<'a, 'll, 'tcx>, cast_to: Ty<'tcx>) -> &'ll Value {
let cast_to = bx.cx.layout_of(cast_to).immediate_llvm_type(bx.cx);
- if self.layout.abi == layout::Abi::Uninhabited {
+ if self.layout.abi.is_uninhabited() {
return C_undef(cast_to);
}
match self.layout.variants {
/// Set the discriminant for a new value of the given case of the given
/// representation.
pub fn codegen_set_discr(&self, bx: &Builder<'a, 'll, 'tcx>, variant_index: usize) {
- if self.layout.for_variant(bx.cx, variant_index).abi == layout::Abi::Uninhabited {
+ if self.layout.for_variant(bx.cx, variant_index).abi.is_uninhabited() {
return;
}
match self.layout.variants {
mir::CastKind::Misc => {
assert!(cast.is_llvm_immediate());
let ll_t_out = cast.immediate_llvm_type(bx.cx);
- if operand.layout.abi == layout::Abi::Uninhabited {
+ if operand.layout.abi.is_uninhabited() {
return (bx, OperandRef {
val: OperandValue::Immediate(C_undef(ll_t_out)),
layout: cast,
rval: OpTy<'tcx>,
) -> EvalResult<'tcx, (u128, usize)> {
trace!("read_discriminant_value {:#?}", rval.layout);
- if rval.layout.abi == layout::Abi::Uninhabited {
+ if rval.layout.abi.is_uninhabited() {
return err!(Unreachable);
}