On August 27, 2015 6:07:59 PM GMT+02:00, Kai Tietz <ktiet...@googlemail.com> 
wrote:
>2015-08-27 12:34 GMT+02:00 Richard Biener <richard.guent...@gmail.com>:
>> On Thu, Aug 27, 2015 at 11:21 AM, Kai Tietz <ktiet...@googlemail.com>
>wrote:
>>> 2015-08-27 4:57 GMT+02:00 Jason Merrill <ja...@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.
>
>Thanks for the point.  I will take a look into cons_unop/binop.  I
>just expect that this routines would fail if they get c++-expressions,
>aren't they?

They fail for everything they do not handle.

Richard.

>>>> Jason
>
>Kai


Reply via email to