On 5/15/25 4:58 PM, Ville Voutilainen wrote:
On Thu, 15 May 2025 at 18:32, Ville Voutilainen
<ville.voutilai...@gmail.com> wrote:

On Thu, 15 May 2025 at 18:19, Jason Merrill <ja...@redhat.com> wrote:

@@ -3347,8 +3347,6 @@ cp_fold (tree x, fold_flags_t flags)
               || id_equal (DECL_NAME (callee), "as_const")))
         {
           r = CALL_EXPR_ARG (x, 0);
-         if (!same_type_p (TREE_TYPE (x), TREE_TYPE (r)))
-           r = build_nop (TREE_TYPE (x), r);

This is removing the conversion entirely; I'm rather surprised it didn't
break anything.  I thought you were thinking to make the build_nop
unconditional.

Oops. Yes, that makes more sense. I am confused how that build_nop
actually works, but it indeed should
convert r to x, and not be completely nuked. Re-doing...

So, let's try this again. As discussed privately, the difference of
whether that build_nop is there is hard to the point of
unknown-how-to test-trigger, but this patch makes more sense.

Tested on Linux-PPC64 (gcc112). Ok for trunk?

OK.

   Further simplify the stdlib inline folding

    gcc/cp/ChangeLog:
            * cp-gimplify.cc (cp_fold): Do the conversion
unconditionally, even for same-type cases.

    gcc/ChangeLog:
            * doc/invoke.texi: Add to_underlying to -ffold-simple-inlines.

Reply via email to