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
  ulrich.weig...@de.ibm.com

Reply via email to