Lines Matching refs:errors
234 fn from(errors: VerifierErrors) -> Vec<VerifierError> { in from()
235 errors.0 in from()
240 fn from(errors: VerifierErrors) -> VerifierResult<()> { in from()
241 if errors.is_empty() { in from()
244 Err(errors) in from()
264 let mut errors = VerifierErrors::default(); in verify_function() localVariable
266 let result = verifier.run(&mut errors); in verify_function()
267 if errors.is_empty() { in verify_function()
271 Err(errors) in verify_function()
282 errors: &mut VerifierErrors, in verify_context()
287 verifier.cfg_integrity(cfg, errors)?; in verify_context()
290 verifier.domtree_integrity(domtree, errors)?; in verify_context()
292 verifier.run(errors) in verify_context()
330 fn verify_global_values(&self, errors: &mut VerifierErrors) -> VerifierStepResult { in verify_global_values()
345 errors.report(( in verify_global_values()
368 errors.report((gv, format!("undeclared vmctx reference {gv}"))); in verify_global_values()
375 errors.report(( in verify_global_values()
382 errors.report(( in verify_global_values()
396 errors.report(( in verify_global_values()
415 fn encodable_as_bb(&self, block: Block, errors: &mut VerifierErrors) -> VerifierStepResult { in encodable_as_bb()
418 Err((inst, message)) => errors.fatal((inst, self.context(inst), message)), in encodable_as_bb()
426 errors: &mut VerifierErrors, in block_integrity()
433 return errors.fatal(( in block_integrity()
440 return errors.fatal((block, "block does not end in a terminator instruction")); in block_integrity()
446 return errors.fatal(( in block_integrity()
458 return errors.fatal((arg, format!("does not belong to {block}"))); in block_integrity()
462 return errors.fatal((arg, "expected an argument, found a result")); in block_integrity()
470 fn instruction_integrity(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in instruction_integrity()
476 return errors.fatal(( in instruction_integrity()
488 return errors.fatal(( in instruction_integrity()
495 self.verify_entity_references(inst, errors) in instruction_integrity()
501 errors: &mut VerifierErrors, in verify_entity_references()
506 self.verify_inst_arg(inst, arg, errors)?; in verify_entity_references()
511 errors.report(( in verify_entity_references()
520 self.verify_inst_result(inst, res, errors)?; in verify_entity_references()
525 self.verify_value_list(inst, args, errors)?; in verify_entity_references()
528 self.verify_block(inst, destination.block(&self.func.dfg.value_lists), errors)?; in verify_entity_references()
535 self.verify_value(inst, arg, errors)?; in verify_entity_references()
536 self.verify_block(inst, block_then.block(&self.func.dfg.value_lists), errors)?; in verify_entity_references()
537 self.verify_block(inst, block_else.block(&self.func.dfg.value_lists), errors)?; in verify_entity_references()
540 self.verify_jump_table(inst, table, errors)?; in verify_entity_references()
548 self.verify_func_ref(inst, func_ref, errors)?; in verify_entity_references()
549 self.verify_value_list(inst, args, errors)?; in verify_entity_references()
550 self.verify_callee_patchability(inst, func_ref, opcode, errors)?; in verify_entity_references()
555 self.verify_sig_ref(inst, sig_ref, errors)?; in verify_entity_references()
556 self.verify_value_list(inst, args, errors)?; in verify_entity_references()
564 self.verify_func_ref(inst, func_ref, errors)?; in verify_entity_references()
565 self.verify_value_list(inst, args, errors)?; in verify_entity_references()
566 self.verify_exception_table(inst, exception, errors)?; in verify_entity_references()
567 self.verify_exception_compatible_abi(inst, exception, errors)?; in verify_entity_references()
574 self.verify_value_list(inst, args, errors)?; in verify_entity_references()
575 self.verify_exception_table(inst, exception, errors)?; in verify_entity_references()
576 self.verify_exception_compatible_abi(inst, exception, errors)?; in verify_entity_references()
579 self.verify_func_ref(inst, func_ref, errors)?; in verify_entity_references()
582 self.verify_stack_slot(inst, stack_slot, errors)?; in verify_entity_references()
590 self.verify_dynamic_stack_slot(inst, dynamic_stack_slot, errors)?; in verify_entity_references()
593 self.verify_global_value(inst, global_value, errors)?; in verify_entity_references()
604 return errors.fatal(( in verify_entity_references()
611 return errors.fatal(( in verify_entity_references()
625 return errors.fatal(( in verify_entity_references()
633 return errors.fatal(( in verify_entity_references()
645 self.verify_bitcast(inst, flags, arg, errors)?; in verify_entity_references()
648 self.verify_is_address(inst, arg, errors)?; in verify_entity_references()
651 self.verify_is_address(inst, arg, errors)?; in verify_entity_references()
658 self.verify_is_address(inst, p, errors)?; in verify_entity_references()
665 self.verify_is_address(inst, p, errors)?; in verify_entity_references()
672 self.verify_is_address(inst, p, errors)?; in verify_entity_references()
679 self.verify_is_address(inst, p, errors)?; in verify_entity_references()
686 self.verify_constant_size(inst, opcode, constant_handle, errors)?; in verify_entity_references()
690 self.verify_block(inst, block, errors)?; in verify_entity_references()
691 self.verify_try_call_handler_index(inst, block, imm.into(), errors)?; in verify_entity_references()
729 errors: &mut VerifierErrors, in verify_block()
732 return errors.fatal((loc, format!("invalid block reference {e}"))); in verify_block()
736 return errors.fatal((loc, format!("invalid reference to entry block {e}"))); in verify_block()
746 errors: &mut VerifierErrors, in verify_sig_ref()
749 errors.fatal(( in verify_sig_ref()
763 errors: &mut VerifierErrors, in verify_func_ref()
766 errors.nonfatal(( in verify_func_ref()
780 errors: &mut VerifierErrors, in verify_stack_slot()
783 errors.nonfatal((inst, self.context(inst), format!("invalid stack slot {ss}"))) in verify_stack_slot()
793 errors: &mut VerifierErrors, in verify_dynamic_stack_slot()
796 errors.nonfatal(( in verify_dynamic_stack_slot()
810 errors: &mut VerifierErrors, in verify_global_value()
813 errors.nonfatal(( in verify_global_value()
827 errors: &mut VerifierErrors, in verify_value_list()
830 errors.nonfatal(( in verify_value_list()
844 errors: &mut VerifierErrors, in verify_jump_table()
847 errors.nonfatal(( in verify_jump_table()
855 self.verify_block(inst, block.block(pool), errors)?; in verify_jump_table()
865 errors: &mut VerifierErrors, in verify_exception_table()
869 errors.nonfatal(( in verify_exception_table()
881 self.verify_sig_ref(inst, exdata.signature(), errors)?; in verify_exception_table()
885 self.verify_block(inst, block.block(pool), errors)?; in verify_exception_table()
894 errors: &mut VerifierErrors, in verify_exception_compatible_abi()
900 errors.nonfatal(( in verify_exception_compatible_abi()
916 errors: &mut VerifierErrors, in verify_callee_patchability()
926 errors.fatal(( in verify_callee_patchability()
933 errors.fatal(( in verify_callee_patchability()
940 errors.fatal(( in verify_callee_patchability()
953 errors: &mut VerifierErrors, in verify_value()
957 errors.nonfatal(( in verify_value()
971 errors: &mut VerifierErrors, in verify_inst_arg()
973 self.verify_value(loc_inst, v, errors)?; in verify_inst_arg()
988 return errors.fatal(( in verify_inst_arg()
996 return errors.fatal(( in verify_inst_arg()
1008 return errors.fatal(( in verify_inst_arg()
1015 return errors.fatal(( in verify_inst_arg()
1026 return errors.fatal(( in verify_inst_arg()
1034 return errors.fatal(( in verify_inst_arg()
1043 return errors.fatal(( in verify_inst_arg()
1062 errors: &mut VerifierErrors, in verify_inst_result()
1064 self.verify_value(loc_inst, v, errors)?; in verify_inst_result()
1069 errors.fatal(( in verify_inst_result()
1078 ValueDef::Param(_, _) => errors.fatal(( in verify_inst_result()
1083 ValueDef::Union(_, _) => errors.fatal(( in verify_inst_result()
1096 errors: &mut VerifierErrors, in verify_bitcast()
1102 errors.fatal(( in verify_bitcast()
1115 errors.fatal(( in verify_bitcast()
1120 errors.fatal(( in verify_bitcast()
1134 errors: &mut VerifierErrors, in verify_constant_size()
1143 errors.fatal(( in verify_constant_size()
1158 errors: &mut VerifierErrors, in verify_is_address()
1166 errors.nonfatal(( in verify_is_address()
1182 errors: &mut VerifierErrors, in domtree_integrity()
1191 return errors.fatal(( in domtree_integrity()
1199 return errors.fatal(( in domtree_integrity()
1211 return errors.fatal(( in domtree_integrity()
1222 fn typecheck_entry_block_params(&self, errors: &mut VerifierErrors) -> VerifierStepResult { in typecheck_entry_block_params()
1228 return errors.fatal(( in typecheck_entry_block_params()
1241 errors.report(( in typecheck_entry_block_params()
1252 errors.as_result() in typecheck_entry_block_params()
1255 fn check_entry_not_cold(&self, errors: &mut VerifierErrors) -> VerifierStepResult { in check_entry_not_cold()
1258 return errors in check_entry_not_cold()
1262 errors.as_result() in check_entry_not_cold()
1265 fn typecheck(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in typecheck()
1274 errors.report(( in typecheck()
1291 let _ = self.typecheck_results(inst, ctrl_type, errors); in typecheck()
1292 let _ = self.typecheck_fixed_args(inst, ctrl_type, errors); in typecheck()
1293 let _ = self.typecheck_variable_args(inst, errors); in typecheck()
1294 let _ = self.typecheck_return(inst, errors); in typecheck()
1295 let _ = self.typecheck_special(inst, errors); in typecheck()
1304 errors: &mut VerifierErrors, in typecheck_results()
1312 errors.report(( in typecheck_results()
1321 return errors.nonfatal(( in typecheck_results()
1332 return errors.nonfatal(( in typecheck_results()
1345 errors: &mut VerifierErrors, in typecheck_fixed_args()
1354 errors.report(( in typecheck_fixed_args()
1365 errors.report(( in typecheck_fixed_args()
1384 errors: &mut VerifierErrors, in typecheck_variable_args()
1388 self.typecheck_block_call(inst, destination, BlockCallTargetType::Normal, errors)?; in typecheck_variable_args()
1394 self.typecheck_block_call(inst, block_then, BlockCallTargetType::Normal, errors)?; in typecheck_variable_args()
1395 self.typecheck_block_call(inst, block_else, BlockCallTargetType::Normal, errors)?; in typecheck_variable_args()
1399 self.typecheck_block_call(inst, block, BlockCallTargetType::Normal, errors)?; in typecheck_variable_args()
1409 errors, in typecheck_variable_args()
1419 errors, in typecheck_variable_args()
1438 self.typecheck_variable_args_iterator(inst, arg_types, args, errors)?; in typecheck_variable_args()
1446 errors.nonfatal(( in typecheck_variable_args()
1458 self.typecheck_variable_args_iterator(inst, arg_types, args, errors)?; in typecheck_variable_args()
1465 self.typecheck_variable_args_iterator(inst, arg_types, args, errors)?; in typecheck_variable_args()
1477 errors: &mut VerifierErrors, in typecheck_block_call()
1483 return errors.nonfatal(( in typecheck_block_call()
1495 let Some(arg_ty) = self.block_call_arg_ty(arg, inst, target_type, errors)? else { in typecheck_block_call()
1500 errors.nonfatal(( in typecheck_block_call()
1515 errors: &mut VerifierErrors, in block_call_arg_ty()
1524 errors.fatal(( in block_call_arg_ty()
1544 errors.fatal(( in block_call_arg_ty()
1552 errors.fatal(( in block_call_arg_ty()
1568 errors.fatal(( in block_call_arg_ty()
1581 errors.fatal(( in block_call_arg_ty()
1599 errors: &mut VerifierErrors, in typecheck_variable_args_iterator()
1612 errors.report(( in typecheck_variable_args_iterator()
1624 return errors.nonfatal(( in typecheck_variable_args_iterator()
1638 fn typecheck_return(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in typecheck_return()
1651 errors, in typecheck_return()
1661 self.typecheck_tail_call(inst, sig_ref, errors)?; in typecheck_return()
1668 self.typecheck_tail_call(inst, sig_ref, errors)?; in typecheck_return()
1679 errors: &mut VerifierErrors, in typecheck_tail_call()
1684 errors.report(( in typecheck_tail_call()
1691 errors.report(( in typecheck_tail_call()
1698 self.typecheck_return_types(inst, types, errors, "results of callee must match caller")?; in typecheck_tail_call()
1706 errors: &mut VerifierErrors, in typecheck_return_types()
1711 return errors.nonfatal((inst, self.context(inst), message)); in typecheck_return_types()
1715 errors.report(( in typecheck_return_types()
1730 fn typecheck_special(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in typecheck_special()
1737 return errors.nonfatal(( in typecheck_special()
1754 errors: &mut VerifierErrors, in cfg_integrity()
1768 errors.report(( in cfg_integrity()
1777 errors.report(( in cfg_integrity()
1796 errors.report(( in cfg_integrity()
1805 errors.report(( in cfg_integrity()
1817 errors.as_result() in cfg_integrity()
1820 fn immediate_constraints(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in immediate_constraints()
1826 errors.fatal(( in immediate_constraints()
1851 errors.fatal(( in immediate_constraints()
1867 errors.fatal(( in immediate_constraints()
1873 errors.fatal(( in immediate_constraints()
1886 fn iconst_bounds(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in iconst_bounds()
1906 errors.fatal(( in iconst_bounds()
1919 fn typecheck_function_signature(&self, errors: &mut VerifierErrors) -> VerifierStepResult { in typecheck_function_signature()
1944 errors.report(( in typecheck_function_signature()
1952 errors.report(( in typecheck_function_signature()
1962 errors.report(( in typecheck_function_signature()
1972 if errors.has_error() { Err(()) } else { Ok(()) } in typecheck_function_signature()
1980 errors: &mut VerifierErrors, in verify_try_call_handler_index()
1983 return errors.fatal(( in verify_try_call_handler_index()
1989 return errors.fatal(( in verify_try_call_handler_index()
1995 return errors.fatal(( in verify_try_call_handler_index()
2001 return errors.fatal(( in verify_try_call_handler_index()
2014 return errors.fatal(( in verify_try_call_handler_index()
2023 pub fn debug_tags(&self, inst: Inst, errors: &mut VerifierErrors) -> VerifierStepResult { in debug_tags()
2029 return errors.fatal(( in debug_tags()
2042 errors: &mut VerifierErrors, in verify_signature()
2047 errors.fatal(( in verify_signature()
2058 fn verify_signatures(&self, errors: &mut VerifierErrors) -> VerifierStepResult { in verify_signatures()
2060 self.verify_signature(&self.func.signature, AnyEntity::Function, errors)?; in verify_signatures()
2067 self.verify_signature(&self.func.dfg.signatures[funcdata.signature], func, errors)?; in verify_signatures()
2076 self.verify_signature(sigdata, sig, errors)?; in verify_signatures()
2081 pub fn run(&self, errors: &mut VerifierErrors) -> VerifierStepResult { in run()
2082 self.verify_global_values(errors)?; in run()
2083 self.typecheck_entry_block_params(errors)?; in run()
2084 self.check_entry_not_cold(errors)?; in run()
2085 self.typecheck_function_signature(errors)?; in run()
2086 self.verify_signatures(errors)?; in run()
2090 return errors.fatal((block, format!("{block} cannot be empty"))); in run()
2094 self.block_integrity(block, inst, errors)?; in run()
2095 self.instruction_integrity(inst, errors)?; in run()
2096 self.typecheck(inst, errors)?; in run()
2097 self.immediate_constraints(inst, errors)?; in run()
2098 self.iconst_bounds(inst, errors)?; in run()
2099 self.debug_tags(inst, errors)?; in run()
2102 self.encodable_as_bb(block, errors)?; in run()
2105 if !errors.is_empty() { in run()
2108 pretty_verifier_error(self.func, None, errors.clone()) in run()
2144 let mut errors = VerifierErrors::default(); in empty() localVariable
2146 assert_eq!(verifier.run(&mut errors), Ok(())); in empty()
2147 assert!(errors.0.is_empty()); in empty()
2170 let mut errors = VerifierErrors::default(); in bad_instruction_format() localVariable
2172 let _ = verifier.run(&mut errors); in bad_instruction_format()
2174 assert_err_with_msg!(errors, "instruction format"); in bad_instruction_format()
2198 let mut errors = VerifierErrors::default(); in test_iconst_bounds() localVariable
2200 let _ = verifier.run(&mut errors); in test_iconst_bounds()
2201 errors in test_iconst_bounds()
2250 let mut errors = VerifierErrors::default(); in test_function_invalid_param() localVariable
2254 let _ = verifier.typecheck_function_signature(&mut errors); in test_function_invalid_param()
2255 assert_err_with_msg!(errors, "Parameter at position 0 has an invalid type"); in test_function_invalid_param()
2263 let mut errors = VerifierErrors::default(); in test_function_invalid_return_value() localVariable
2267 let _ = verifier.typecheck_function_signature(&mut errors); in test_function_invalid_return_value()
2268 assert_err_with_msg!(errors, "Return value at position 0 has an invalid type"); in test_function_invalid_return_value()
2286 let mut errors = VerifierErrors::default(); in test_printing_contextual_errors() localVariable
2292 let _ = verifier.typecheck_results(inst, types::I32, &mut errors); in test_printing_contextual_errors()
2294 format!("{}", errors.0[0]), in test_printing_contextual_errors()
2307 let mut errors = VerifierErrors::default(); in test_empty_block() localVariable
2308 let _ = verifier.run(&mut errors); in test_empty_block()
2310 assert_err_with_msg!(errors, "block0 cannot be empty"); in test_empty_block()