]> git.proxmox.com Git - rustc.git/blame - src/test/mir-opt/inline/inline-compatibility.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / src / test / mir-opt / inline / inline-compatibility.rs
CommitLineData
1b1a35ee
XL
1// Checks that only functions with compatible attributes are inlined.
2//
3// only-x86_64
1b1a35ee
XL
4
5#![crate_type = "lib"]
6#![feature(no_sanitize)]
7#![feature(target_feature_11)]
fc512014 8#![feature(c_variadic)]
1b1a35ee
XL
9
10// EMIT_MIR inline_compatibility.inlined_target_feature.Inline.diff
11#[target_feature(enable = "sse2")]
12pub unsafe fn inlined_target_feature() {
13 target_feature();
14}
15
16// EMIT_MIR inline_compatibility.not_inlined_target_feature.Inline.diff
17pub unsafe fn not_inlined_target_feature() {
18 target_feature();
19}
20
21// EMIT_MIR inline_compatibility.inlined_no_sanitize.Inline.diff
22#[no_sanitize(address)]
23pub unsafe fn inlined_no_sanitize() {
24 no_sanitize();
25}
26
27// EMIT_MIR inline_compatibility.not_inlined_no_sanitize.Inline.diff
28pub unsafe fn not_inlined_no_sanitize() {
29 no_sanitize();
30}
31
32#[inline]
33#[target_feature(enable = "sse2")]
34pub unsafe fn target_feature() {}
35
36#[inline]
fc512014 37#[no_sanitize(address)]
1b1a35ee 38pub unsafe fn no_sanitize() {}
fc512014
XL
39
40// EMIT_MIR inline_compatibility.not_inlined_c_variadic.Inline.diff
41pub unsafe fn not_inlined_c_variadic() {
42 let s = sum(4u32, 4u32, 30u32, 200u32, 1000u32);
43}
44
45#[no_mangle]
46#[inline(always)]
47unsafe extern "C" fn sum(n: u32, mut vs: ...) -> u32 {
48 let mut s = 0;
49 let mut i = 0;
50 while i != n {
51 s += vs.arg::<u32>();
52 i += 1;
53 }
54 s
55}