http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41894
Georg-Johann Lay <avr at gjlay dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |avr at gjlay dot de --- Comment #10 from Georg-Johann Lay <avr at gjlay dot de> 2011-03-13 12:07:06 UTC --- (In reply to comment #9) > Closing as fixed in 4.5.0. Why and how is this bug fixed? Slight variations in source/compiler will make this bug appear/disappear, so that testing the same source against other compiler version does not tell wether or not the bug actually has gone. QImode still is not allowed in r28/r29. PR46779 (4.4.x) and PR45291 (4.5.x) are duplicates for this bug in different compiler versions. Some passes like subreg lowering, RTL lowering generate (set (subreg:QI (REG:HI ... where HI reg finally gets allocated to r29:r28, however, the subreg is not allowed in r28 resp. r29 leading to wrong code. See also comment in http://gcc.gnu.org/ml/gcc/2011-02/msg00498.html All the hacks in avr_hard_regno_mode_ok just work around prolems somewhere else, and maybe around problems that have been fixed long ago. IMO avr_hard_regno_mode_ok should be written according to documentation and look what regressions that triggers, if any. Johann