@@ -242,7 +242,7 @@ enum class LLVMRustAttributeKind {
242
242
MinSize = 4 ,
243
243
Naked = 5 ,
244
244
NoAlias = 6 ,
245
- NoCapture = 7 ,
245
+ CapturesAddress = 7 ,
246
246
NoInline = 8 ,
247
247
NonNull = 9 ,
248
248
NoRedZone = 10 ,
@@ -297,12 +297,6 @@ static Attribute::AttrKind fromRust(LLVMRustAttributeKind Kind) {
297
297
return Attribute::Naked;
298
298
case LLVMRustAttributeKind::NoAlias:
299
299
return Attribute::NoAlias;
300
- case LLVMRustAttributeKind::NoCapture:
301
- #if LLVM_VERSION_GE(21, 0)
302
- report_fatal_error (" NoCapture doesn't exist in LLVM 21" );
303
- #else
304
- return Attribute::NoCapture;
305
- #endif
306
300
case LLVMRustAttributeKind::NoCfCheck:
307
301
return Attribute::NoCfCheck;
308
302
case LLVMRustAttributeKind::NoInline:
@@ -377,6 +371,7 @@ static Attribute::AttrKind fromRust(LLVMRustAttributeKind Kind) {
377
371
#else
378
372
report_fatal_error (" DeadOnReturn attribute requires LLVM 21 or later" );
379
373
#endif
374
+ case LLVMRustAttributeKind::CapturesAddress:
380
375
case LLVMRustAttributeKind::CapturesReadOnly:
381
376
report_fatal_error (" Should be handled separately" );
382
377
}
@@ -429,9 +424,9 @@ extern "C" void LLVMRustEraseInstFromParent(LLVMValueRef Instr) {
429
424
extern " C" LLVMAttributeRef
430
425
LLVMRustCreateAttrNoValue (LLVMContextRef C, LLVMRustAttributeKind RustAttr) {
431
426
#if LLVM_VERSION_GE(21, 0)
432
- // LLVM 21 replaced the NoCapture attribute with Captures(none).
433
- if (RustAttr == LLVMRustAttributeKind::NoCapture) {
434
- return wrap ( Attribute::getWithCaptureInfo ( *unwrap (C), CaptureInfo::none ( )));
427
+ if (RustAttr == LLVMRustAttributeKind::CapturesAddress) {
428
+ return wrap ( Attribute::getWithCaptureInfo (
429
+ *unwrap (C), CaptureInfo (CaptureComponents::Address )));
435
430
}
436
431
if (RustAttr == LLVMRustAttributeKind::CapturesReadOnly) {
437
432
return wrap (Attribute::getWithCaptureInfo (
0 commit comments