aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/rust/compile/issue-3916.rs
blob: 59b522b4ed5cb2f1d0736b5f7b9f9fab9045fff5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#![feature(rustc_attrs)]

#[lang = "sized"]
trait Sized {}

#[lang = "add"]
trait Add<Rhs = Self> {
    type Output;

    fn add(self, rhs: Rhs) -> Self::Output;
}

macro_rules! add_impl {
    ($($t:ty)*) => ($(
        impl Add for $t {
            type Output = $t;

            #[inline]
            #[rustc_inherit_overflow_checks]
            fn add(self, other: $t) -> $t { self + other }
        }
    )*)
}

add_impl! { usize u8 u16 u32 u64 u128 isize i8 i16 i32 i64 i128 f32 f64 }

pub fn test(len: usize) -> u64 {
    let mut i = 0;
    let mut out = 0;
    if i + 3 < len {
        out = 123;
    } else {
        out = 456;
    }
    out
}