@@ -1839,12 +1839,6 @@ fn lower_ssa_inst(
18391839 let text = values[ text] ;
18401840 let needles = values[ needles] ;
18411841 let replacements = values[ replacements] ;
1842- let out = owned_value_temp_slot_addr (
1843- b,
1844- pointer_type,
1845- owned_value_temps,
1846- SsaTempValueSlotKey :: Output ( output. id ) ,
1847- ) ?;
18481842 let out_raw = ssa_call_string_replace_literal_many (
18491843 b,
18501844 pointer_type,
@@ -1854,6 +1848,20 @@ fn lower_ssa_inst(
18541848 needles,
18551849 replacements,
18561850 ) ?;
1851+ let error = b. ins ( ) . icmp_imm ( IntCC :: Equal , out_raw, 0 ) ;
1852+ let failed = b. create_block ( ) ;
1853+ let replaced = b. create_block ( ) ;
1854+ b. ins ( ) . brif ( error, failed, & [ ] , replaced, & [ ] ) ;
1855+ b. switch_to_block ( failed) ;
1856+ let status = b. ins ( ) . iconst ( types:: I32 , STATUS_ERROR as i64 ) ;
1857+ jump_with_status ( b, exit_block, status) ;
1858+ b. switch_to_block ( replaced) ;
1859+ let out = owned_value_temp_slot_addr (
1860+ b,
1861+ pointer_type,
1862+ owned_value_temps,
1863+ SsaTempValueSlotKey :: Output ( output. id ) ,
1864+ ) ?;
18571865 clear_owned_value_temp_slot ( b, pointer_type, helper_refs, helper_addrs, out) ?;
18581866 ssa_store_heap_ptr_in_value ( b, layout. value , out, layout. value . string_tag , out_raw) ;
18591867 out
@@ -3979,6 +3987,7 @@ fn ssa_call_regex_match(
39793987 Ok ( b. inst_results ( call) [ 0 ] )
39803988}
39813989
3990+ #[ allow( clippy:: too_many_arguments) ]
39823991fn ssa_call_regex_replace (
39833992 b : & mut FunctionBuilder ,
39843993 pointer_type : cranelift_codegen:: ir:: Type ,
0 commit comments