On Fri, Sep 20, 2024 at 07:03:45PM -0400, Jason Merrill wrote: > > The CALL_EXPR case in cp_fold uses !flag_no_inline instead, that makes more > > sense to me. > > Because checking "noinline" attribute (which means don't inline this > > function) on current_function_decl rather than on functions being "inlined" > > (the constexpr functions being non-manifestly constant evaluated) is just > > weird. > > If we really wanted, we could honor "noinline" during constant evaluation > > on the CALL_EXPR/AGGR_INIT_EXPR fndecls, but dunno if whenever doing the > > non-manifestly constant evaluated cases or just in special cases like these > > two (CALL_EXPR in cp_fold, this in cp_fold_r). > > Checking noinline in non-manifestly constant-evaluated cases might make > sense.
Though, if somebody marks some function explicitly constexpr they should be prepared to get some constexpr evaluation of it, doesn't have to be strictly standard required one. And for -fimplicit-constexpr we already have "noinline" attribute check, so maybe it is ok as is. Jakub