------- Comment #4 from bonzini at gnu dot org 2006-02-06 14:06 ------- More precisely, combine is attempting to do instruction selection, and in the case of this bug it cannot.
A similar ARM test case is int f (int a, int b) { int s = a - b; int t = a < b ? a : s; x = s; y = t; } which should be something like (pseudo-assembly) rsbs s, b, a str [x], s movlt s, a str [y], t it is possible to teach the combiner about this reduced testcase, but it won't match in the full testcase from which this was extracted, because s is used between its definition and the definition of t. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16798