; RUN: split-file %s %t ; RUN: not llvm-link %t/a.ll %t/b.ll 2>&1 | FileCheck --check-prefix=CHECK-KIND %s ; RUN: not llvm-link %t/c.ll %t/d.ll 2>&1 | FileCheck --check-prefix=CHECK-REG %s ; RUN: not llvm-link %t/e.ll %t/f.ll 2>&1 | FileCheck --check-prefix=CHECK-OFFSET %s ; RUN: llvm-link %t/g.ll %t/h.ll ; CHECK-KIND: error: linking module flags 'stack-protector-guard': IDs have conflicting values ; CHECK-REG: error: linking module flags 'stack-protector-guard-reg': IDs have conflicting values ; CHECK-OFFSET: error: linking module flags 'stack-protector-guard-offset': IDs have conflicting values ;--- a.ll ; Test that different values of stack-protector-guard fail. define void @foo() sspstrong { ret void } !llvm.module.flags = !{!0} !0 = !{i32 1, !"stack-protector-guard", !"sysreg"} ;--- b.ll declare void @foo() sspstrong define void @bar() sspstrong { call void @foo() ret void } !llvm.module.flags = !{!0} !0 = !{i32 1, !"stack-protector-guard", !"global"} ;--- c.ll ; Test that different values of stack-protector-guard-reg fail. define void @foo() sspstrong { ret void } !llvm.module.flags = !{!0} !0 = !{i32 1, !"stack-protector-guard-reg", !"sp_el0"} ;--- d.ll declare void @foo() sspstrong define void @bar() sspstrong { call void @foo() ret void } !llvm.module.flags = !{!0} !0 = !{i32 1, !"stack-protector-guard-reg", !"sp_el1"} ;--- e.ll ; Test that different values of stack-protector-guard-offset fail. define void @foo() sspstrong { ret void } !llvm.module.flags = !{!0} !0 = !{i32 1, !"stack-protector-guard-offset", i32 257} ;--- f.ll declare void @foo() sspstrong define void @bar() sspstrong { call void @foo() ret void } !llvm.module.flags = !{!0} !0 = !{i32 1, !"stack-protector-guard-offset", i32 256} ;--- g.ll ; Test that the same values for the three module attributes succeed. define void @foo() sspstrong { ret void } !llvm.module.flags = !{!0, !1, !2} !0 = !{i32 1, !"stack-protector-guard", !"sysreg"} !1 = !{i32 1, !"stack-protector-guard-reg", !"sp_el0"} !2 = !{i32 1, !"stack-protector-guard-offset", i32 257} ;--- h.ll declare void @foo() sspstrong define void @bar() sspstrong { call void @foo() ret void } !llvm.module.flags = !{!0, !1, !2} !0 = !{i32 1, !"stack-protector-guard", !"sysreg"} !1 = !{i32 1, !"stack-protector-guard-reg", !"sp_el0"} !2 = !{i32 1, !"stack-protector-guard-offset", i32 257}