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. Richard. > Honza > > csum->speculative_call_targets.safe_push (item); > > } > > } > > -- > > 2.24.1 > > >