This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [c++-delayed-folding] fold_simple


On Thu, Aug 27, 2015 at 11:21 AM, Kai Tietz <ktietz70@googlemail.com> wrote:
> 2015-08-27 4:57 GMT+02:00 Jason Merrill <jason@redhat.com>:
>> Why does fold_simple fold so many patterns?  I thought we wanted something
>> that would just fold conversions and negations of constant values.
>
> Yes, initial variant was handling much less patterns.  But actually we
> need for functions (eg. like build_vec_init in init.c) a simple
> routine to perform basic constant-value arithmetics (sizeof * / + -
> trunc, etc) to avoid call of maybe_constant_value.  Also for
> overflow-diagnostics we want at least to resolve such simple patterns
> for constant-values only.  We could change those calls to use
> maybe_constant_value instead, but the overhead (and some of its
> folding) leads much further then working on constant-values only (as
> fold_simple does).
>
> It might be that we can remove the ternary vector-cond expression from
> this routine, The cond-expr itself seems to be necessary to resolve
> patterns like (1 == 1 ? 32 : 64), which can appear pretty often via
> macro-code.  I will check if I what patterns I can remove here.

Note that fold-const.c has constant-only folding routines (handling only
constant operands).  const_unop, const_binop (no const_ternop split
out yet).

Richard.

>> Jason
>
>
> Kai


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]