// Zero-size temporaries aren't always initialized, which
// doesn't matter because they don't contain data, but
// we need something in the operand.
- let val = OperandValue::Immediate(common::C_nil(ccx));
+ let nil = common::C_nil(ccx);
+ let val = if common::type_is_imm_pair(ccx, ty) {
+ OperandValue::Pair(nil, nil)
+ } else {
+ OperandValue::Immediate(nil)
+ };
let op = OperandRef {
val: val,
ty: ty
})
}
+#[rustc_mir]
+fn test_fn_ignored_pair() -> ((), ()) {
+ ((), ())
+}
+
+#[rustc_mir]
+fn test_fn_ignored_pair_0() {
+ test_fn_ignored_pair().0
+}
+
fn main() {
assert_eq!(test1(1, (2, 3), &[4, 5, 6]), (1, (2, 3), &[4, 5, 6][..]));
assert_eq!(test2(98), 98);
assert_eq!(test_fn_nil_call(&(|| 42)), 42);
assert_eq!(test_fn_transmute_zst(()), [()]);
+
+ assert_eq!(test_fn_ignored_pair_0(), ());
}