------- Comment #1 from ak at muc dot de 2007-02-03 11:22 ------- Here's a simple test case:
void f(int k, int (*fptr)(int i)) { int i; /* Do something useless */ for (i = 0; i < 5; i++) k *= 10; fptr(k); } compiled with 4.3.0 20070203 gives ... ;; .mmi nop 0 mov r1 = r36 mov b0 = r34 .mib nop 0 mov ar.pfs = r35 br.ret.sptk.many b0 Note b0 is only loaded directly in front of the branch, even though it could have been loaded much earlier in front of the loop. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30688