]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/intrinsic-alignment.rs
Auto merge of #31382 - DanielJCampbell:SaveSpans, r=nrc
[rust.git] / src / test / run-pass / intrinsic-alignment.rs
1 // Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11
12 #![feature(intrinsics, main)]
13
14 mod rusti {
15     extern "rust-intrinsic" {
16         pub fn pref_align_of<T>() -> usize;
17         pub fn min_align_of<T>() -> usize;
18     }
19 }
20
21 #[cfg(any(target_os = "linux",
22           target_os = "macos",
23           target_os = "freebsd",
24           target_os = "dragonfly",
25           target_os = "netbsd",
26           target_os = "openbsd",
27           target_os = "solaris"))]
28 mod m {
29     #[main]
30     #[cfg(target_arch = "x86")]
31     pub fn main() {
32         unsafe {
33             assert_eq!(::rusti::pref_align_of::<u64>(), 8);
34             assert_eq!(::rusti::min_align_of::<u64>(), 4);
35         }
36     }
37
38     #[main]
39     #[cfg(not(target_arch = "x86"))]
40     pub fn main() {
41         unsafe {
42             assert_eq!(::rusti::pref_align_of::<u64>(), 8);
43             assert_eq!(::rusti::min_align_of::<u64>(), 8);
44         }
45     }
46 }
47
48 #[cfg(target_os = "bitrig")]
49 mod m {
50     #[main]
51     #[cfg(target_arch = "x86_64")]
52     pub fn main() {
53         unsafe {
54             assert_eq!(::rusti::pref_align_of::<u64>(), 8);
55             assert_eq!(::rusti::min_align_of::<u64>(), 8);
56         }
57     }
58 }
59
60 #[cfg(target_os = "windows")]
61 mod m {
62     #[main]
63     #[cfg(target_arch = "x86")]
64     pub fn main() {
65         unsafe {
66             assert_eq!(::rusti::pref_align_of::<u64>(), 8);
67             assert_eq!(::rusti::min_align_of::<u64>(), 8);
68         }
69     }
70
71     #[main]
72     #[cfg(target_arch = "x86_64")]
73     pub fn main() {
74         unsafe {
75             assert_eq!(::rusti::pref_align_of::<u64>(), 8);
76             assert_eq!(::rusti::min_align_of::<u64>(), 8);
77         }
78     }
79 }
80
81 #[cfg(target_os = "android")]
82 mod m {
83     #[main]
84     #[cfg(any(target_arch = "arm", target_arch = "aarch64"))]
85     pub fn main() {
86         unsafe {
87             assert_eq!(::rusti::pref_align_of::<u64>(), 8);
88             assert_eq!(::rusti::min_align_of::<u64>(), 8);
89         }
90     }
91 }