// 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