on Thu, Feb 19, 2004 at 05:38:08PM +0100, Falk Hueffner wrote: > Probably related to gcc PR 14166. There's a patch for that here: > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14166
Thanks. That's kind of related, but actually a separate problem. 14166 is a Thumb-specific case, which Debian doesn't hit because Thumb isn't enabled in our configurations. I hope that a patch like this one will fix the problem, though I haven't tested it yet. p. --- arm.h.old Thu Feb 19 13:48:41 2004 +++ arm.h Thu Feb 19 13:56:31 2004 @@ -2003,10 +2003,17 @@ && INTVAL (op) <= 31) \ goto LABEL; \ } \ - /* NASTY: Since this limits the addressing of unsigned \ - byte loads. */ \ - range = ((MODE) == HImode || (MODE) == QImode) \ - ? (arm_arch4 ? 256 : 4095) : 4096; \ + /* XXX For ARM v4 we may be doing a sign-extend operation \ + during the load, but that has a restricted addressing \ + range and we are unable to tell here whether that is the \ + case. To be safe we restrict all loads to that \ + range. */ \ + if (arm_arch4) \ + range = (mode == HImode || mode == QImode) ? 256 : 4096; \ + else if (mode == HImode) \ + range = 4095; \ + else \ + range = 4096; \ if (code == CONST_INT && INTVAL (INDEX) < range \ && INTVAL (INDEX) > -range) \ goto LABEL; \