------- Comment #11 from wvangulik at xs4all dot nl 2007-11-06 21:01 ------- I just realised I did not tried hard enough to find the smallest case:
=========================================== volatile unsigned char bar; void foo(void) { unsigned char x; for(x=0;x<128; x++) { //bar = x+1; bar = x; } } Looks like using the loop counter inside the loop causes the problem. Because when not using x, but just e.g. calling a function is also gives the smallest loop. Looking at the RTL output of test.c.00.expand. it allready is a QI vs HI there... so it's going wrong some where inside gcc I really have no knowledge off... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33970