// Test that the correct module flags are emitted with different control-flow protection flags. // revisions: undefined none branch return full // needs-llvm-components: x86 // [undefined] compile-flags: // [none] compile-flags: -Z cf-protection=none // [branch] compile-flags: -Z cf-protection=branch // [return] compile-flags: -Z cf-protection=return // [full] compile-flags: -Z cf-protection=full // compile-flags: --target x86_64-unknown-linux-gnu #![crate_type = "lib"] #![feature(no_core, lang_items)] #![no_core] #[lang="sized"] trait Sized { } // A basic test function. pub fn test() { } // undefined-NOT: !"cf-protection-branch" // undefined-NOT: !"cf-protection-return" // none-NOT: !"cf-protection-branch" // none-NOT: !"cf-protection-return" // branch-NOT: !"cf-protection-return" // branch: !"cf-protection-branch", i32 1 // branch-NOT: !"cf-protection-return" // return-NOT: !"cf-protection-branch" // return: !"cf-protection-return", i32 1 // return-NOT: !"cf-protection-branch" // full: !"cf-protection-branch", i32 1 // full: !"cf-protection-return", i32 1