Skip to content

Commit cff15e8

Browse files
committed
Add a hack to prevent proc_macro misopt in CI
1 parent 336fe8e commit cff15e8

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

library/proc_macro/src/bridge/buffer.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ pub struct Buffer {
1010
data: *mut u8,
1111
len: usize,
1212
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),
1517
}
1618

1719
unsafe impl Sync for Buffer {}
@@ -141,13 +143,13 @@ impl From<Vec<u8>> for Buffer {
141143
}
142144
}
143145

144-
extern "C" fn reserve(b: Buffer, additional: usize) -> Buffer {
146+
extern "C-unwind" fn reserve(b: Buffer, additional: usize) -> Buffer {
145147
let mut v = to_vec(b);
146148
v.reserve(additional);
147149
Buffer::from(v)
148150
}
149151

150-
extern "C" fn drop(b: Buffer) {
152+
extern "C-unwind" fn drop(b: Buffer) {
151153
mem::drop(to_vec(b));
152154
}
153155

0 commit comments

Comments
 (0)