Auto merge of #68180 - ajpaverd:cfguard-rust, r=nagisa

Add support for Control Flow Guard on Windows.

LLVM now supports Windows Control Flow Guard (CFG): d157a9bc8b
This patch adds support for rustc to emit the required LLVM module flags to enable CFG metadata (cfguard=1) or metadata and checks (cfguard=2). The LLVM module flags are ignored on unsupported targets and operating systems.
This commit is contained in:
bors 2020-02-01 15:02:58 +00:00
commit 64184a3288
8 changed files with 98 additions and 5 deletions

View file

@ -0,0 +1,10 @@
// compile-flags: -Z control_flow_guard=checks
#![crate_type = "lib"]
// A basic test function.
pub fn test() {
}
// Ensure the module flag cfguard=2 is present
// CHECK: !"cfguard", i32 2

View file

@ -0,0 +1,10 @@
// compile-flags: -Z control_flow_guard=disabled
#![crate_type = "lib"]
// A basic test function.
pub fn test() {
}
// Ensure the module flag cfguard is not present
// CHECK-NOT: !"cfguard"

View file

@ -0,0 +1,10 @@
// compile-flags: -Z control_flow_guard=nochecks
#![crate_type = "lib"]
// A basic test function.
pub fn test() {
}
// Ensure the module flag cfguard=1 is present
// CHECK: !"cfguard", i32 1