CFI: Skip non-passed arguments · rcvalle/rust@f2f0d25 (original) (raw)
`@@ -47,40 +47,42 @@ pub fn foo() where
`
47
47
`let _: Type4 = ::bar;
`
48
48
`}
`
49
49
``
50
``
`-
pub fn foo1(_: Type1) { }
`
``
50
`+
// Force arguments to be passed by using a reference. Otherwise, they may end up PassMode::Ignore
`
``
51
+
``
52
`+
pub fn foo1(_: &Type1) { }
`
51
53
`// CHECK: define{{.}}4foo1{{.}}!type ![[TYPE1:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
52
``
`-
pub fn foo2(_: Type1, _: Type1) { }
`
``
54
`+
pub fn foo2(_: &Type1, _: &Type1) { }
`
53
55
`// CHECK: define{{.}}4foo2{{.}}!type ![[TYPE2:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
54
``
`-
pub fn foo3(_: Type1, _: Type1, _: Type1) { }
`
``
56
`+
pub fn foo3(_: &Type1, _: &Type1, _: &Type1) { }
`
55
57
`// CHECK: define{{.}}4foo3{{.}}!type ![[TYPE3:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
56
``
`-
pub fn foo4(_: Type2) { }
`
``
58
`+
pub fn foo4(_: &Type2) { }
`
57
59
`// CHECK: define{{.}}4foo4{{.}}!type ![[TYPE4:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
58
``
`-
pub fn foo5(_: Type2, _: Type2) { }
`
``
60
`+
pub fn foo5(_: &Type2, _: &Type2) { }
`
59
61
`// CHECK: define{{.}}4foo5{{.}}!type ![[TYPE5:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
60
``
`-
pub fn foo6(_: Type2, _: Type2, _: Type2) { }
`
``
62
`+
pub fn foo6(_: &Type2, _: &Type2, _: &Type2) { }
`
61
63
`// CHECK: define{{.}}4foo6{{.}}!type ![[TYPE6:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
62
``
`-
pub fn foo7(_: Type3) { }
`
``
64
`+
pub fn foo7(_: &Type3) { }
`
63
65
`// CHECK: define{{.}}4foo7{{.}}!type ![[TYPE7:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
64
``
`-
pub fn foo8(_: Type3, _: Type3) { }
`
``
66
`+
pub fn foo8(_: &Type3, _: &Type3) { }
`
65
67
`// CHECK: define{{.}}4foo8{{.}}!type ![[TYPE8:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
66
``
`-
pub fn foo9(_: Type3, _: Type3, _: Type3) { }
`
``
68
`+
pub fn foo9(_: &Type3, _: &Type3, _: &Type3) { }
`
67
69
`// CHECK: define{{.}}4foo9{{.}}!type ![[TYPE9:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
68
``
`-
pub fn foo10(_: Type4) { }
`
``
70
`+
pub fn foo10(_: &Type4) { }
`
69
71
`// CHECK: define{{.}}5foo10{{.}}!type ![[TYPE10:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
70
``
`-
pub fn foo11(_: Type4, _: Type4) { }
`
``
72
`+
pub fn foo11(_: &Type4, _: &Type4) { }
`
71
73
`// CHECK: define{{.}}5foo11{{.}}!type ![[TYPE11:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
72
``
`-
pub fn foo12(_: Type4, _: Type4, _: Type4) { }
`
``
74
`+
pub fn foo12(_: &Type4, _: &Type4, _: &Type4) { }
`
73
75
`// CHECK: define{{.}}5foo12{{.}}!type ![[TYPE12:[0-9]+]] !type !{{[0-9]+}} !type !{{[0-9]+}} !type !{{[0-9]+}}
`
74
76
``
75
``
`-
// CHECK: ![[TYPE1]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NvNFNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo10{{[{}][{}]}}extern{{[}][}]}}3barE"}
`
76
``
`-
// CHECK: ![[TYPE2]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NvNFNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo10{{[{}][{}]}}extern{{[}][}]}}3barS_E"}
`
77
``
`-
// CHECK: ![[TYPE3]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NvNFNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo10{{[{}][{}]}}extern{{[}][}]}}3barS_S_E"}
`
78
``
`-
// CHECK: ![[TYPE4]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooE"}
`
79
``
`-
// CHECK: ![[TYPE5]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooS_E"}
`
80
``
`-
// CHECK: ![[TYPE6]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooS_S_E"}
`
81
``
`-
// CHECK: ![[TYPE7]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooE"}
`
82
``
`-
// CHECK: ![[TYPE8]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooS_E"}
`
83
``
`-
// CHECK: ![[TYPE9]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooS_S_E"}
`
84
``
`-
// CHECK: ![[TYPE10]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NvNINvC{{[[:print:]]+}}{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barE"}
`
85
``
`-
// CHECK: ![[TYPE11]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NvNINvC{{[[:print:]]+}}{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barS_E"}
`
86
``
`-
// CHECK: ![[TYPE12]] = !{i64 0, !"ZTSFvu{{[0-9]+}}NvNINvC{{[[:print:]]+}}{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barS_S_E"}
`
``
77
`+
// CHECK: ![[TYPE1]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NvNFNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo10{{[{}][{}]}}extern{{[}][}]}}3barEE"}
`
``
78
`+
// CHECK: ![[TYPE2]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NvNFNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo10{{[{}][{}]}}extern{{[}][}]}}3barES0_E"}
`
``
79
`+
// CHECK: ![[TYPE3]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NvNFNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo10{{[{}][{}]}}extern{{[}][}]}}3barES0_S0_E"}
`
``
80
`+
// CHECK: ![[TYPE4]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooEE"}
`
``
81
`+
// CHECK: ![[TYPE5]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooES0_E"}
`
``
82
`+
// CHECK: ![[TYPE6]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NtNCNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo11{{[{}][{}]}}closure{{[}][}]}}3FooES0_S0_E"}
`
``
83
`+
// CHECK: ![[TYPE7]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooEE"}
`
``
84
`+
// CHECK: ![[TYPE8]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooES0_E"}
`
``
85
`+
// CHECK: ![[TYPE9]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NtNkNvC{{[[:print:]]+}}{{[[:print:]]+}}3foo12{{[{}][{}]}}constant{{[}][}]}}3FooES0_S0_E"}
`
``
86
`+
// CHECK: ![[TYPE10]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barEE"}
`
``
87
`+
// CHECK: ![[TYPE11]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barES0_E"}
`
``
88
`+
// CHECK: ![[TYPE12]] = !{i64 0, !"ZTSFvu3refIu{{[0-9]+}}NvNINvC{{[[:print:]]+}}{{[[:print:]]+}}3foo8{{[{}][{}]}}impl{{[}][}]}}3barES0_S0_E"}
`