use rustc_data_structures::sync::Lrc;
use base;
-use common::{CodegenCx, C_null, C_undef, C_usize};
+use common::{CodegenCx, C_undef, C_usize};
use builder::{Builder, MemFlags};
use value::Value;
use type_of::LayoutLlvmExt;
.unwrap_or_else(|err| {
match constant.literal {
mir::Literal::Promoted { .. } => {
- // FIXME: generate a panic here
+ // this is unreachable as long as runtime
+ // and compile-time agree on values
+ // With floats that won't always be true
+ // so we generate an abort below
},
mir::Literal::Value { .. } => {
err.report_as_error(
);
},
}
+ let fnname = bx.cx.get_intrinsic(&("llvm.trap"));
+ bx.call(fnname, &[], None);
// We've errored, so we don't have to produce working code.
let layout = bx.cx.layout_of(ty);
PlaceRef::new_sized(
- C_null(layout.llvm_type(bx.cx).ptr_to()),
+ C_undef(layout.llvm_type(bx.cx).ptr_to()),
layout,
layout.align,
).load(bx)