> On Wed, Jan 15, 2020 at 1:37 PM Jan Hubicka <hubi...@ucw.cz> wrote: > > > > > gcc/ChangeLog: > > > > > > 2020-01-15 Martin Liska <mli...@suse.cz> > > > > > > * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow > > > 2 calls of streamer_read_hwi in a function call. > > > > Good catch, Martin! > > > --- > > > gcc/ipa-profile.c | 5 +++-- > > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > > > diff --git a/gcc/ipa-profile.c b/gcc/ipa-profile.c > > > index fc231c916b7..03272f20987 100644 > > > --- a/gcc/ipa-profile.c > > > +++ b/gcc/ipa-profile.c > > > @@ -451,8 +451,9 @@ ipa_profile_read_edge_summary (class lto_input_block > > > *ib, cgraph_edge *edge) > > > > > > for (i = 0; i < len; i++) > > > { > > > - speculative_call_target item (streamer_read_hwi (ib), > > > - streamer_read_hwi (ib)); > > > + unsigned int target_id = streamer_read_hwi (ib); > > > + int target_probability = streamer_read_hwi (ib); > > > + speculative_call_target item (target_id, target_probability); > > > > David, this may be interesting case for analyzer/warning. This surfaced > > in LTO stremaing for second time quite recently and leads to hard to > > find bugs. > > > > While day before yesterday in pub I argued that warning for nested > > function calls is not a good way since it would warn too often, perhaps > > we want to have some way to annotate streamer functions to make it clear > > that we do not want them to appear inside function call parameters where > > evaluation order is undefined. > > Maybe one can always warn if you call the same function twice (and the > function appears to have side-effects)? Might fire too often for tree > checking > functions tho.
Yep warning always when function calls appear within different parameters of a function calls seems like something we would not be able to enable by default... Honza > > Richard. > > > Honza > > > csum->speculative_call_targets.safe_push (item); > > > } > > > } > > > -- > > > 2.24.1 > > > > >