Adding the patch author for his information.

Thanks,
Bill

On 1/24/22 2:26 PM, Jakub Jelinek via Gcc-patches wrote:
> On Mon, Jan 24, 2022 at 08:55:37AM -0600, Segher Boessenkool wrote:
>> Hi!
>>
>> On Thu, Jan 13, 2022 at 02:08:53PM -0300, Raoni Fassina Firmino wrote:
>>> Changes since v8[8]:
>>>   - Refactored and expanded builtin-feclearexcept-feraiseexcept-2.c
>>>     testcase:
>>>     + Use a macro to avoid extended repetition of the core test code.
>>>     + Expanded the test code to check builtins return code.
>>>     + Added more tests to test all valid (standard) exceptions input
>> This is okay for trunk (Jeff already approved the generic parts).
>> Thanks!
> This breaks bootstrap with --enable-checking=rtl, e.g. while compiling
> libquadmath/math/llrintq.c
> #0  internal_error (gmsgid=0x131bb1e0 "RTL check: expected code '%s', have 
> '%s' in %s, at %s:%d") at ../../gcc/diagnostic.cc:1938
> #1  0x00000000113a0e94 in rtl_check_failed_code1 (r=0x3fffaf4a24a8, 
> code=CONST_INT, file=0x13400018 "../../gcc/config/rs6000/rs6000.md", 
> line=7010, 
>     func=0x13409298 <gen_feraiseexceptsi(rtx_def*, rtx_def*)::__FUNCTION__> 
> "gen_feraiseexceptsi") at ../../gcc/rtl.cc:918
> #2  0x00000000125154e8 in gen_feraiseexceptsi (operand0=0x3fffaf4a3720, 
> operand1=0x3fffaf4a24a8) at ../../gcc/config/rs6000/rs6000.md:7010
> #3  0x00000000108badf4 in insn_gen_fn::operator()<rtx_def*, rtx_def*> 
> (this=0x138ee440 <insn_data+131776>) at ../../gcc/recog.h:407
> #4  0x0000000010890b1c in expand_builtin_feclear_feraise_except 
> (exp=0x3fffaf3041a0, target=0x3fffaf4a3720, target_mode=E_SImode, 
> op_optab=feraiseexcept_optab)
>     at ../../gcc/builtins.cc:2606
> #5  0x00000000108a6f74 in expand_builtin (exp=0x3fffaf3041a0, 
> target=0x3fffaf100490, subtarget=0x0, mode=E_VOIDmode, ignore=1) at 
> ../../gcc/builtins.cc:7130
> #6  0x0000000010c01770 in expand_expr_real_1 (exp=0x3fffaf3041a0, target=0x0, 
> tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, 
> inner_reference_p=false)
>     at ../../gcc/expr.cc:11536
> #7  0x0000000010bf0604 in expand_expr_real (exp=0x3fffaf3041a0, 
> target=0x3fffaf100490, tmode=E_VOIDmode, modifier=EXPAND_NORMAL, alt_rtl=0x0, 
> inner_reference_p=false)
>     at ../../gcc/expr.cc:8737
> #8  0x00000000108ffa00 in expand_expr (exp=0x3fffaf3041a0, 
> target=0x3fffaf100490, mode=E_VOIDmode, modifier=EXPAND_NORMAL) at 
> ../../gcc/expr.h:301
> #9  0x000000001090c934 in expand_call_stmt (stmt=0x3fffaf1314d0) at 
> ../../gcc/cfgexpand.cc:2831
> #10 0x0000000010911e18 in expand_gimple_stmt_1 (stmt=0x3fffaf1314d0) at 
> ../../gcc/cfgexpand.cc:3864
> #11 0x0000000010912730 in expand_gimple_stmt (stmt=0x3fffaf1314d0) at 
> ../../gcc/cfgexpand.cc:4028
> #12 0x000000001091ecb0 in expand_gimple_basic_block (bb=0x3fffaf190c98, 
> disable_tail_calls=false) at ../../gcc/cfgexpand.cc:6069
> #13 0x0000000010921be8 in (anonymous namespace)::pass_expand::execute 
> (this=0x13ab0d40, fun=0x3fffaf0c0c38) at ../../gcc/cfgexpand.cc:6795
> #14 0x0000000011216ea4 in execute_one_pass (pass=0x13ab0d40) at 
> ../../gcc/passes.cc:2637
> #15 0x00000000112173d8 in execute_pass_list_1 (pass=0x13ab0d40) at 
> ../../gcc/passes.cc:2737
> #16 0x00000000112174b0 in execute_pass_list (fn=0x3fffaf0c0c38, 
> pass=0x13aac8c0) at ../../gcc/passes.cc:2748
> #17 0x00000000109b4e4c in cgraph_node::expand (this=0x3fffaf151760) at 
> ../../gcc/cgraphunit.cc:1834
> #18 0x00000000109b5844 in expand_all_functions () at 
> ../../gcc/cgraphunit.cc:1998
> #19 0x00000000109b67d0 in symbol_table::compile (this=0x3fffaf0d0000) at 
> ../../gcc/cgraphunit.cc:2348
> #20 0x00000000109b6f40 in symbol_table::finalize_compilation_unit 
> (this=0x3fffaf0d0000) at ../../gcc/cgraphunit.cc:2529
> #21 0x00000000114f10f4 in compile_file () at ../../gcc/toplev.cc:479
> #22 0x00000000114f6204 in do_compile (no_backend=false) at 
> ../../gcc/toplev.cc:2158
> #23 0x00000000114f68d0 in toplev::main (this=0x3fffffffeb64, argc=45, 
> argv=0x3fffffffef98) at ../../gcc/toplev.cc:2310
> #24 0x0000000012f97a6c in main (argc=45, argv=0x3fffffffef98) at 
> ../../gcc/main.cc:39
>
> expand_builtin_feclear_feraise_except doesn't check if op0 matches
> the predicate of operands[1], the backend requires const_int_operand,
> but because the call isn't done with a constant integer:
> feraiseexcept (t == LLONG_MIN ? FE_INEXACT : FE_INVALID);
> op0 is a REG.
> If CONST_INT is what is expected on all targets, then it should punt if
> op0 isn't one, otherwise it should the predicate.
>
>       Jakub
>

Reply via email to