public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: target/4855: arm (thumb) backend generates illegal strb   instruction]
@ 2001-11-15 12:39 Adrian von Bidder
  0 siblings, 0 replies; only message in thread
From: Adrian von Bidder @ 2001-11-15 12:39 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2949 bytes --]

The following reply was made to PR target/4855; it has been noted by GNATS.

From: Adrian von Bidder <avbidder@acter.ch>
To: Nick Clifton <nickc@cambridge.redhat.com>, gcc <gcc@gcc.gnu.org>
Cc:  
Subject: Re: target/4855: arm (thumb) backend generates illegal strb  
 instruction]
Date: Tue, 20 Nov 2001 11:23:20 +0100

 Nick Clifton wrote:
 > 
 > Hi Adrian,
 > 
 > > The bug is quite robust. It occurs with
 > > arm-linux-elf-gcc -mthumb -fpic -mpic-register=r6 -O2
 > 
 > Well the good news, or bad news, depending upon your point of view, is
 > that this bug does not appear to be reproducible with the current CVS
 > sources.  At least not for a toolchain configured with
 > --target=arm-elf rather than --target=arm-linux-elf.
 
 Yo!
 
 Sorry to inform you that this problem has resurfaced and is reproducible
 with both arm-uclinux (my current workdir; don't use the patch I've
 posted some time ago) and arm-elf (from todays unmodified cvs) targets.
 
 It is, of course, highly dependent on the workings of the register
 allocator, so it depends on optimizer flags.
 
 arm-elf-gcc -mthumb -fpic -mpic-register=r6 -Os shouls show it with
 these with the newest cvs.
 
 The code from target/3218 does not seem to have the problem. 'My' code
 (target/4855) does still show the problem, however. [1]
 
 greets from Zürich
 -- vbi
 [1]
 typedef enum
 {
   REG_NOERROR = 0,
   REG_NOMATCH,
   REG_BADPAT,
   REG_ECOLLATE,
   REG_ECTYPE,
   REG_EESCAPE,
   REG_ESUBREG,
   REG_EBRACK,
   REG_EPAREN,
   REG_EBRACE,
   REG_BADBR,
   REG_ERANGE,
   REG_ESPACE,
   REG_BADRPT,
   REG_EEND,
   REG_ESIZE,
   REG_ERPAREN
 }
 reg_errcode_t;
 
 typedef unsigned long int reg_syntax_t;
 
 extern int strcoll (const char *__s1, const char *__s2);
 
 reg_errcode_t
 compile_range (p_ptr, pend, translate, syntax, b)
      const char **p_ptr, *pend;
      char *translate;
      reg_syntax_t syntax;
      unsigned char *b;
 {
   unsigned this_char;
 
   const char *p = *p_ptr;
   reg_errcode_t ret;
   char range_start[2];
   char range_end[2];
   char ch[2];
 
   if (p == pend)
     return REG_ERANGE;
 
   range_start[0] = p[-2];
   range_start[1] = '\0';
   range_end[0] = p[0];
   range_end[1] = '\0';
 
   (*p_ptr)++;
 
 
   ret = syntax & ((((((((((((((((((unsigned long int) 1) << 1) << 1) <<
 1) <<
 			      1) << 1) << 1) << 1) << 1) << 1) << 1) << 1) <<
 		      1) << 1) << 1) << 1) << 1) ? REG_ERANGE : REG_NOERROR;
   ch[1] = '\0';
   for (this_char = 0; this_char <= (unsigned char) -1; ++this_char)
     {
       ch[0] = this_char;
       if (strcoll (range_start, ch) <= 0 && strcoll (ch, range_end) <=
 0)
 	{
 	  (b
 	   [((unsigned
 	      char) ((translate ? (char)
 		      translate[(unsigned char) (this_char)] : (this_char))))
 	    / 8] |=
 	   1 <<
 	   (((unsigned char) (translate ? (char)
 			      translate[(unsigned char) (this_char)]
 			      : (this_char))) % 8));
 	  ret = REG_NOERROR;
 	}
     }
 
   return ret;
 }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2001-11-20 15:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-15 12:39 target/4855: arm (thumb) backend generates illegal strb instruction] Adrian von Bidder

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).