clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。で決着のついていなかった部分について。 1からnの総和を求める関数sum() int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } をclang -target arm -march=armv7-a -O -S sum.c で以下のコンパイル結果を得ましたが、これは正しいのか? sum: mov r1, #0 cmp r0, #1 blt .LBB0_2 sub r1, r0, #2 sub r2, r0, #1 umull r1, r2, r2, r1 and r2, r2, #1 lsrs r2, r2, #1 rrx r1, r1 add r0, r1, r0, lsl #1