Skip to content

Commit d71daaa

Browse files
committed
Auto merge of rust-lang#122929 - workingjubilee:rollup-11qzhoe, r=workingjubilee
Rollup of 10 pull requests Successful merges: - rust-lang#121940 (Mention Register Size in `#[warn(asm_sub_register)]`) - rust-lang#122460 (Rework rmake support library API) - rust-lang#122698 (Cancel `cargo update` job if there's no updates) - rust-lang#122780 (Rename `hir::Local` into `hir::LetStmt`) - rust-lang#122875 (CFI: Support self_cell-like recursion) - rust-lang#122879 (CFI: Strip auto traits off Virtual calls) - rust-lang#122915 (Delay a bug if no RPITITs were found) - rust-lang#122916 (docs(sync): normalize dot in fn summaries) - rust-lang#122922 (-Zprint-type-sizes: print the types of awaitees and unnamed coroutine locals.) - rust-lang#122927 (Change an ICE regression test to use the original reproducer) r? `@ghost` `@rustbot` modify labels: rollup
2 parents c3b05c6 + 048ba2a commit d71daaa

File tree

149 files changed

+1113
-599
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

149 files changed

+1113
-599
lines changed

Diff for: .github/workflows/dependencies.yml

+6-3
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
4343
# Exit with error if open and S-waiting-on-bors
4444
if [[ "$STATE" == "OPEN" && "$WAITING_ON_BORS" == "true" ]]; then
45-
exit 1
45+
gh run cancel ${{ github.run_id }}
4646
fi
4747
4848
update:
@@ -65,7 +65,10 @@ jobs:
6565
6666
- name: cargo update
6767
# Remove first line that always just says "Updating crates.io index"
68-
run: cargo update 2>&1 | sed '/crates.io index/d' | tee -a cargo_update.log
68+
# If there are no changes, cancel the job here
69+
run: |
70+
cargo update 2>&1 | sed '/crates.io index/d' | tee -a cargo_update.log
71+
git status --porcelain | grep -q Cargo.lock || gh run cancel ${{ github.run_id }}
6972
- name: upload Cargo.lock artifact for use in PR
7073
uses: actions/upload-artifact@v3
7174
with:
@@ -131,7 +134,7 @@ jobs:
131134
# Exit with error if PR is closed
132135
STATE=$(gh pr view cargo_update --repo $GITHUB_REPOSITORY --json state --jq '.state')
133136
if [[ "$STATE" != "OPEN" ]]; then
134-
exit 1
137+
gh run cancel ${{ github.run_id }}
135138
fi
136139
137140
gh pr edit cargo_update --title "${PR_TITLE}" --body-file body.md --repo $GITHUB_REPOSITORY

Diff for: compiler/rustc_ast_lowering/src/block.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
8181
(self.arena.alloc_from_iter(stmts), expr)
8282
}
8383

84-
fn lower_local(&mut self, l: &Local) -> &'hir hir::Local<'hir> {
84+
fn lower_local(&mut self, l: &Local) -> &'hir hir::LetStmt<'hir> {
8585
let ty = l
8686
.ty
8787
.as_ref()
@@ -97,7 +97,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
9797
let span = self.lower_span(l.span);
9898
let source = hir::LocalSource::Normal;
9999
self.lower_attrs(hir_id, &l.attrs);
100-
self.arena.alloc(hir::Local { hir_id, ty, pat, init, els, span, source })
100+
self.arena.alloc(hir::LetStmt { hir_id, ty, pat, init, els, span, source })
101101
}
102102

103103
fn lower_block_check_mode(&mut self, b: &BlockCheckMode) -> hir::BlockCheckMode {

Diff for: compiler/rustc_ast_lowering/src/index.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,8 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
302302
});
303303
}
304304

305-
fn visit_local(&mut self, l: &'hir Local<'hir>) {
306-
self.insert(l.span, l.hir_id, Node::Local(l));
305+
fn visit_local(&mut self, l: &'hir LetStmt<'hir>) {
306+
self.insert(l.span, l.hir_id, Node::LetStmt(l));
307307
self.with_parent(l.hir_id, |this| {
308308
intravisit::walk_local(this, l);
309309
})

Diff for: compiler/rustc_ast_lowering/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2341,7 +2341,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
23412341
debug_assert!(!a.is_empty());
23422342
self.attrs.insert(hir_id.local_id, a);
23432343
}
2344-
let local = hir::Local {
2344+
let local = hir::LetStmt {
23452345
hir_id,
23462346
init,
23472347
pat,

Diff for: compiler/rustc_borrowck/src/diagnostics/conflict_errors.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -622,7 +622,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
622622

623623
// FIXME: We make sure that this is a normal top-level binding,
624624
// but we could suggest `todo!()` for all uninitalized bindings in the pattern pattern
625-
if let hir::StmtKind::Let(hir::Local { span, ty, init: None, pat, .. }) =
625+
if let hir::StmtKind::Let(hir::LetStmt { span, ty, init: None, pat, .. }) =
626626
&ex.kind
627627
&& let hir::PatKind::Binding(..) = pat.kind
628628
&& span.contains(self.decl_span)
@@ -800,7 +800,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
800800
for (_, node) in tcx.hir().parent_iter(expr.hir_id) {
801801
let e = match node {
802802
hir::Node::Expr(e) => e,
803-
hir::Node::Local(hir::Local { els: Some(els), .. }) => {
803+
hir::Node::LetStmt(hir::LetStmt { els: Some(els), .. }) => {
804804
let mut finder = BreakFinder { found_breaks: vec![], found_continues: vec![] };
805805
finder.visit_block(els);
806806
if !finder.found_breaks.is_empty() {
@@ -2124,7 +2124,7 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> {
21242124
hir::intravisit::walk_expr(self, e);
21252125
}
21262126

2127-
fn visit_local(&mut self, local: &'hir hir::Local<'hir>) {
2127+
fn visit_local(&mut self, local: &'hir hir::LetStmt<'hir>) {
21282128
if let hir::Pat { kind: hir::PatKind::Binding(_, hir_id, _ident, _), .. } =
21292129
local.pat
21302130
&& let Some(init) = local.init

Diff for: compiler/rustc_borrowck/src/diagnostics/mutability_errors.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
558558
hir::intravisit::walk_stmt(self, stmt);
559559
let expr = match stmt.kind {
560560
hir::StmtKind::Semi(expr) | hir::StmtKind::Expr(expr) => expr,
561-
hir::StmtKind::Let(hir::Local { init: Some(expr), .. }) => expr,
561+
hir::StmtKind::Let(hir::LetStmt { init: Some(expr), .. }) => expr,
562562
_ => {
563563
return;
564564
}
@@ -737,7 +737,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
737737
&& let body = self.infcx.tcx.hir().body(body_id)
738738
&& let Some(hir_id) = (BindingFinder { span: pat_span }).visit_body(body).break_value()
739739
&& let node = self.infcx.tcx.hir_node(hir_id)
740-
&& let hir::Node::Local(hir::Local {
740+
&& let hir::Node::LetStmt(hir::LetStmt {
741741
pat: hir::Pat { kind: hir::PatKind::Ref(_, _), .. },
742742
..
743743
})
@@ -1170,7 +1170,7 @@ impl<'a, 'tcx> MirBorrowckCtxt<'a, 'tcx> {
11701170
};
11711171

11721172
if let Some(hir_id) = hir_id
1173-
&& let hir::Node::Local(local) = self.infcx.tcx.hir_node(hir_id)
1173+
&& let hir::Node::LetStmt(local) = self.infcx.tcx.hir_node(hir_id)
11741174
{
11751175
let tables = self.infcx.tcx.typeck(def_id.as_local().unwrap());
11761176
if let Some(clone_trait) = self.infcx.tcx.lang_items().clone_trait()

Diff for: compiler/rustc_codegen_gcc/src/asm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ impl<'a, 'gcc, 'tcx> AsmBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
541541
let builtin_unreachable: RValue<'gcc> = unsafe {
542542
std::mem::transmute(builtin_unreachable)
543543
};
544-
self.call(self.type_void(), None, None, builtin_unreachable, &[], None);
544+
self.call(self.type_void(), None, None, builtin_unreachable, &[], None, None);
545545
}
546546

547547
// Write results to outputs.

Diff for: compiler/rustc_codegen_gcc/src/builder.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use rustc_middle::ty::layout::{
2525
FnAbiError, FnAbiOfHelpers, FnAbiRequest, HasParamEnv, HasTyCtxt, LayoutError, LayoutOfHelpers,
2626
TyAndLayout,
2727
};
28-
use rustc_middle::ty::{ParamEnv, Ty, TyCtxt};
28+
use rustc_middle::ty::{ParamEnv, Ty, TyCtxt, Instance};
2929
use rustc_span::def_id::DefId;
3030
use rustc_span::Span;
3131
use rustc_target::abi::{
@@ -592,12 +592,13 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
592592
then: Block<'gcc>,
593593
catch: Block<'gcc>,
594594
_funclet: Option<&Funclet>,
595+
instance: Option<Instance<'tcx>>,
595596
) -> RValue<'gcc> {
596597
let try_block = self.current_func().new_block("try");
597598

598599
let current_block = self.block.clone();
599600
self.block = try_block;
600-
let call = self.call(typ, fn_attrs, None, func, args, None); // TODO(antoyo): use funclet here?
601+
let call = self.call(typ, fn_attrs, None, func, args, None, instance); // TODO(antoyo): use funclet here?
601602
self.block = current_block;
602603

603604
let return_value =
@@ -1667,6 +1668,7 @@ impl<'a, 'gcc, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'gcc, 'tcx> {
16671668
func: RValue<'gcc>,
16681669
args: &[RValue<'gcc>],
16691670
funclet: Option<&Funclet>,
1671+
_instance: Option<Instance<'tcx>>,
16701672
) -> RValue<'gcc> {
16711673
// FIXME(antoyo): remove when having a proper API.
16721674
let gcc_func = unsafe { std::mem::transmute(func) };

Diff for: compiler/rustc_codegen_gcc/src/intrinsic/mod.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
133133
func,
134134
&args.iter().map(|arg| arg.immediate()).collect::<Vec<_>>(),
135135
None,
136+
None,
136137
)
137138
}
138139
sym::likely => self.expect(args[0].immediate(), true),
@@ -401,7 +402,7 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallMethods<'tcx> for Builder<'a, 'gcc, 'tcx> {
401402
fn abort(&mut self) {
402403
let func = self.context.get_builtin_function("abort");
403404
let func: RValue<'gcc> = unsafe { std::mem::transmute(func) };
404-
self.call(self.type_void(), None, None, func, &[], None);
405+
self.call(self.type_void(), None, None, func, &[], None, None);
405406
}
406407

407408
fn assume(&mut self, value: Self::Value) {
@@ -1103,7 +1104,7 @@ fn try_intrinsic<'a, 'b, 'gcc, 'tcx>(
11031104
dest: RValue<'gcc>,
11041105
) {
11051106
if bx.sess().panic_strategy() == PanicStrategy::Abort {
1106-
bx.call(bx.type_void(), None, None, try_func, &[data], None);
1107+
bx.call(bx.type_void(), None, None, try_func, &[data], None, None);
11071108
// Return 0 unconditionally from the intrinsic call;
11081109
// we can never unwind.
11091110
let ret_align = bx.tcx.data_layout.i32_align.abi;
@@ -1177,21 +1178,21 @@ fn codegen_gnu_try<'gcc>(
11771178
let zero = bx.cx.context.new_rvalue_zero(bx.int_type);
11781179
let ptr = bx.cx.context.new_call(None, eh_pointer_builtin, &[zero]);
11791180
let catch_ty = bx.type_func(&[bx.type_i8p(), bx.type_i8p()], bx.type_void());
1180-
bx.call(catch_ty, None, None, catch_func, &[data, ptr], None);
1181+
bx.call(catch_ty, None, None, catch_func, &[data, ptr], None, None);
11811182
bx.ret(bx.const_i32(1));
11821183

11831184
// NOTE: the blocks must be filled before adding the try/catch, otherwise gcc will not
11841185
// generate a try/catch.
11851186
// FIXME(antoyo): add a check in the libgccjit API to prevent this.
11861187
bx.switch_to_block(current_block);
1187-
bx.invoke(try_func_ty, None, None, try_func, &[data], then, catch, None);
1188+
bx.invoke(try_func_ty, None, None, try_func, &[data], then, catch, None, None);
11881189
});
11891190

11901191
let func = unsafe { std::mem::transmute(func) };
11911192

11921193
// Note that no invoke is used here because by definition this function
11931194
// can't panic (that's what it's catching).
1194-
let ret = bx.call(llty, None, None, func, &[try_func, data, catch_func], None);
1195+
let ret = bx.call(llty, None, None, func, &[try_func, data, catch_func], None, None);
11951196
let i32_align = bx.tcx().data_layout.i32_align.abi;
11961197
bx.store(ret, dest, i32_align);
11971198
}

Diff for: compiler/rustc_codegen_llvm/src/asm.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -466,11 +466,11 @@ pub(crate) fn inline_asm_call<'ll>(
466466

467467
let call = if !labels.is_empty() {
468468
assert!(catch_funclet.is_none());
469-
bx.callbr(fty, None, None, v, inputs, dest.unwrap(), labels, None)
469+
bx.callbr(fty, None, None, v, inputs, dest.unwrap(), labels, None, None)
470470
} else if let Some((catch, funclet)) = catch_funclet {
471-
bx.invoke(fty, None, None, v, inputs, dest.unwrap(), catch, funclet)
471+
bx.invoke(fty, None, None, v, inputs, dest.unwrap(), catch, funclet, None)
472472
} else {
473-
bx.call(fty, None, None, v, inputs, None)
473+
bx.call(fty, None, None, v, inputs, None, None)
474474
};
475475

476476
// Store mark in a metadata node so we can map LLVM errors

Diff for: compiler/rustc_codegen_llvm/src/builder.rs

+29-12
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs;
1919
use rustc_middle::ty::layout::{
2020
FnAbiError, FnAbiOfHelpers, FnAbiRequest, LayoutError, LayoutOfHelpers, TyAndLayout,
2121
};
22-
use rustc_middle::ty::{self, Ty, TyCtxt};
22+
use rustc_middle::ty::{self, Instance, Ty, TyCtxt};
2323
use rustc_span::Span;
24-
use rustc_symbol_mangling::typeid::{kcfi_typeid_for_fnabi, typeid_for_fnabi, TypeIdOptions};
24+
use rustc_symbol_mangling::typeid::{
25+
kcfi_typeid_for_fnabi, kcfi_typeid_for_instance, typeid_for_fnabi, typeid_for_instance,
26+
TypeIdOptions,
27+
};
2528
use rustc_target::abi::{self, call::FnAbi, Align, Size, WrappingRange};
2629
use rustc_target::spec::{HasTargetSpec, SanitizerSet, Target};
2730
use smallvec::SmallVec;
@@ -221,6 +224,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
221224
then: &'ll BasicBlock,
222225
catch: &'ll BasicBlock,
223226
funclet: Option<&Funclet<'ll>>,
227+
instance: Option<Instance<'tcx>>,
224228
) -> &'ll Value {
225229
debug!("invoke {:?} with args ({:?})", llfn, args);
226230

@@ -233,10 +237,10 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
233237
}
234238

235239
// Emit CFI pointer type membership test
236-
self.cfi_type_test(fn_attrs, fn_abi, llfn);
240+
self.cfi_type_test(fn_attrs, fn_abi, instance, llfn);
237241

238242
// Emit KCFI operand bundle
239-
let kcfi_bundle = self.kcfi_operand_bundle(fn_attrs, fn_abi, llfn);
243+
let kcfi_bundle = self.kcfi_operand_bundle(fn_attrs, fn_abi, instance, llfn);
240244
let kcfi_bundle = kcfi_bundle.as_ref().map(|b| &*b.raw);
241245
if let Some(kcfi_bundle) = kcfi_bundle {
242246
bundles.push(kcfi_bundle);
@@ -1231,6 +1235,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
12311235
llfn: &'ll Value,
12321236
args: &[&'ll Value],
12331237
funclet: Option<&Funclet<'ll>>,
1238+
instance: Option<Instance<'tcx>>,
12341239
) -> &'ll Value {
12351240
debug!("call {:?} with args ({:?})", llfn, args);
12361241

@@ -1243,10 +1248,10 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
12431248
}
12441249

12451250
// Emit CFI pointer type membership test
1246-
self.cfi_type_test(fn_attrs, fn_abi, llfn);
1251+
self.cfi_type_test(fn_attrs, fn_abi, instance, llfn);
12471252

12481253
// Emit KCFI operand bundle
1249-
let kcfi_bundle = self.kcfi_operand_bundle(fn_attrs, fn_abi, llfn);
1254+
let kcfi_bundle = self.kcfi_operand_bundle(fn_attrs, fn_abi, instance, llfn);
12501255
let kcfi_bundle = kcfi_bundle.as_ref().map(|b| &*b.raw);
12511256
if let Some(kcfi_bundle) = kcfi_bundle {
12521257
bundles.push(kcfi_bundle);
@@ -1468,7 +1473,7 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
14681473

14691474
pub(crate) fn call_intrinsic(&mut self, intrinsic: &str, args: &[&'ll Value]) -> &'ll Value {
14701475
let (ty, f) = self.cx.get_intrinsic(intrinsic);
1471-
self.call(ty, None, None, f, args, None)
1476+
self.call(ty, None, None, f, args, None, None)
14721477
}
14731478

14741479
fn call_lifetime_intrinsic(&mut self, intrinsic: &str, ptr: &'ll Value, size: Size) {
@@ -1526,7 +1531,7 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
15261531
format!("llvm.{instr}.sat.i{int_width}.f{float_width}")
15271532
};
15281533
let f = self.declare_cfn(&name, llvm::UnnamedAddr::No, self.type_func(&[src_ty], dest_ty));
1529-
self.call(self.type_func(&[src_ty], dest_ty), None, None, f, &[val], None)
1534+
self.call(self.type_func(&[src_ty], dest_ty), None, None, f, &[val], None, None)
15301535
}
15311536

15321537
pub(crate) fn landing_pad(
@@ -1554,6 +1559,7 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
15541559
default_dest: &'ll BasicBlock,
15551560
indirect_dest: &[&'ll BasicBlock],
15561561
funclet: Option<&Funclet<'ll>>,
1562+
instance: Option<Instance<'tcx>>,
15571563
) -> &'ll Value {
15581564
debug!("invoke {:?} with args ({:?})", llfn, args);
15591565

@@ -1566,10 +1572,10 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
15661572
}
15671573

15681574
// Emit CFI pointer type membership test
1569-
self.cfi_type_test(fn_attrs, fn_abi, llfn);
1575+
self.cfi_type_test(fn_attrs, fn_abi, instance, llfn);
15701576

15711577
// Emit KCFI operand bundle
1572-
let kcfi_bundle = self.kcfi_operand_bundle(fn_attrs, fn_abi, llfn);
1578+
let kcfi_bundle = self.kcfi_operand_bundle(fn_attrs, fn_abi, instance, llfn);
15731579
let kcfi_bundle = kcfi_bundle.as_ref().map(|b| &*b.raw);
15741580
if let Some(kcfi_bundle) = kcfi_bundle {
15751581
bundles.push(kcfi_bundle);
@@ -1601,6 +1607,7 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
16011607
&mut self,
16021608
fn_attrs: Option<&CodegenFnAttrs>,
16031609
fn_abi: Option<&FnAbi<'tcx, Ty<'tcx>>>,
1610+
instance: Option<Instance<'tcx>>,
16041611
llfn: &'ll Value,
16051612
) {
16061613
let is_indirect_call = unsafe { llvm::LLVMRustIsNonGVFunctionPointerTy(llfn) };
@@ -1622,7 +1629,11 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
16221629
options.insert(TypeIdOptions::NORMALIZE_INTEGERS);
16231630
}
16241631

1625-
let typeid = typeid_for_fnabi(self.tcx, fn_abi, options);
1632+
let typeid = if let Some(instance) = instance {
1633+
typeid_for_instance(self.tcx, &instance, options)
1634+
} else {
1635+
typeid_for_fnabi(self.tcx, fn_abi, options)
1636+
};
16261637
let typeid_metadata = self.cx.typeid_metadata(typeid).unwrap();
16271638

16281639
// Test whether the function pointer is associated with the type identifier.
@@ -1644,6 +1655,7 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
16441655
&mut self,
16451656
fn_attrs: Option<&CodegenFnAttrs>,
16461657
fn_abi: Option<&FnAbi<'tcx, Ty<'tcx>>>,
1658+
instance: Option<Instance<'tcx>>,
16471659
llfn: &'ll Value,
16481660
) -> Option<llvm::OperandBundleDef<'ll>> {
16491661
let is_indirect_call = unsafe { llvm::LLVMRustIsNonGVFunctionPointerTy(llfn) };
@@ -1665,7 +1677,12 @@ impl<'a, 'll, 'tcx> Builder<'a, 'll, 'tcx> {
16651677
options.insert(TypeIdOptions::NORMALIZE_INTEGERS);
16661678
}
16671679

1668-
let kcfi_typeid = kcfi_typeid_for_fnabi(self.tcx, fn_abi, options);
1680+
let kcfi_typeid = if let Some(instance) = instance {
1681+
kcfi_typeid_for_instance(self.tcx, &instance, options)
1682+
} else {
1683+
kcfi_typeid_for_fnabi(self.tcx, fn_abi, options)
1684+
};
1685+
16691686
Some(llvm::OperandBundleDef::new("kcfi", &[self.const_u32(kcfi_typeid)]))
16701687
} else {
16711688
None

0 commit comments

Comments
 (0)