Running test-linearize on some of my code, I seem to be losing an assignment after a break. In this minimal test code, y should have the previous iteration's value of x, so the value returned is the difference between the final two values from fetch(): int fetch(int); int test(int v) { int x, y; for (int i=0; ; i++) { x = fetch(i); if (v < x) break; y = x; } return x-y; } test-linearize produces: test: .L0xb7db300c: <entry-point> br .L0xb7db3034 .L0xb7db3034: call.32 %r2 <- fetch, $0 setlt.32 %r5 <- %arg1, %r2 dead %r5 br %r5, .L0xb7db3084, .L0xb7db3034 .L0xb7db3084: dead %r2 sub.32 %r11 <- %r2, %r2 dead %r11 ret.32 %r11 So it thinks that both x and y are in %r2. However, if y is initialised, the assignment happens as expected. Any ideas? Dan. - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html