File tree 1 file changed +6
-4
lines changed
library/proc_macro/src/bridge
1 file changed +6
-4
lines changed Original file line number Diff line number Diff line change @@ -10,8 +10,10 @@ pub struct Buffer {
10
10
data : * mut u8 ,
11
11
len : usize ,
12
12
capacity : usize ,
13
- reserve : extern "C" fn ( Buffer , usize ) -> Buffer ,
14
- drop : extern "C" fn ( Buffer ) ,
13
+ // HACK(nbdd0121): These should be `extern "C"` but LLVM < 17.0.4 will misoptimise if we do so.
14
+ // Remove this when we drop support for them or when we require patches to be present.
15
+ reserve : extern "C-unwind" fn ( Buffer , usize ) -> Buffer ,
16
+ drop : extern "C-unwind" fn ( Buffer ) ,
15
17
}
16
18
17
19
unsafe impl Sync for Buffer { }
@@ -141,13 +143,13 @@ impl From<Vec<u8>> for Buffer {
141
143
}
142
144
}
143
145
144
- extern "C" fn reserve ( b : Buffer , additional : usize ) -> Buffer {
146
+ extern "C-unwind " fn reserve ( b : Buffer , additional : usize ) -> Buffer {
145
147
let mut v = to_vec ( b) ;
146
148
v. reserve ( additional) ;
147
149
Buffer :: from ( v)
148
150
}
149
151
150
- extern "C" fn drop ( b : Buffer ) {
152
+ extern "C-unwind " fn drop ( b : Buffer ) {
151
153
mem:: drop ( to_vec ( b) ) ;
152
154
}
153
155
You can’t perform that action at this time.
0 commit comments