Jan Hubicka wrote:
> (edge_execution_predicate): Rewrite as...
> (set_cond_stmt_execution_predicate): ... this function; handle
> __builtin_constant_p.
This causes ICEs when building recent Linux kernels with the
CONFIG_TRACE_BRANCH_PROFLING option. This reduced test case:
static inline __attribute__((always_inline)) int f (unsigned int n, unsigned
int size)
{
return (__builtin_constant_p (size != 0 && n > ~0 / size)
? !!(size != 0 && n > ~0 / size)
: ({ static unsigned int count[2] = { 0, 0 };
int r = !!(size != 0 && n > ~0 / size);
count[r]++;
r; }));
}
int g (unsigned int size)
{
return f (size / 4096, 4);
}
built with -O2 (on i386) on current mainline results in:
/home/uweigand/test.i:15:1: internal compiler error: tree check: expected
ssa_name, have integer_cst in set_cond_stmt_execution_predicate, at
ipa-inline-analysis.c:1190
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
[email protected]