Hi Honza.
Thanks for the huge patch. I'm willing to help you with testing, but I can't
apply the patch on top of r254348:
../../gcc/profile.c: In function ‘void compute_branch_probabilities(unsigned
int, unsigned int)’:
../../gcc/profile.c:794:11: error: ‘flag_guess_branch_probability’ was not
declared in this scope
|| !flag_guess_branch_probability)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../gcc/profile.c:794:11: note: suggested alternative:
‘OPT_fguess_branch_probability’
|| !flag_guess_branch_probability)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OPT_fguess_branch_probability
../../gcc/profile.c:801:21: error: no match for ‘operator!=’ (operand types are
‘profile_count’ and ‘profile_count’)
if (bb->count != profile_count::zero ())
~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../gcc/coretypes.h:397:0,
from ../../gcc/profile.c:52:
../../gcc/wide-int.h:3158:19: note: candidate: template<class T1, class T2> typename
wi::binary_traits<T1, T2>::predicate_result operator!=(const T1&, const T2&)
BINARY_PREDICATE (operator !=, ne_p)
^
../../gcc/wide-int.h:3142:3: note: in definition of macro ‘BINARY_PREDICATE’
OP (const T1 &x, const T2 &y) \
^~
../../gcc/wide-int.h:3158:19: note: template argument deduction/substitution
failed:
BINARY_PREDICATE (operator !=, ne_p)
^
../../gcc/wide-int.h:3142:3: note: in definition of macro ‘BINARY_PREDICATE’
OP (const T1 &x, const T2 &y) \
^~
../../gcc/wide-int.h: In substitution of ‘template<class T1, class T2> typename
wi::binary_traits<T1, T2>::predicate_result operator!=(const T1&, const T2&) [with T1
= profile_count; T2 = profile_count]’:
../../gcc/profile.c:801:45: required from here
../../gcc/wide-int.h:3158:19: error: incomplete type
‘wi::int_traits<profile_count>’ used in nested name specifier
BINARY_PREDICATE (operator !=, ne_p)
^
../../gcc/wide-int.h:3142:3: note: in definition of macro ‘BINARY_PREDICATE’
OP (const T1 &x, const T2 &y) \
^~
Can you please check that?
Thanks,
Martin