Derived from gdb/testsuite/gdb.base/store.c : 

struct s_3 { short s[3]; } z_3, s_3;
struct s_3
add_struct_3 (struct s_3 s)
{
  int i;
  for (i = 0; i < sizeof (s) / sizeof (s.s[0]); i++)
    {
      s.s[i] = s.s[i] + s.s[i];
    }
  return s;
}


struct s_3
wack_struct_3 (void)
{
  int i; register struct s_3 u = z_3;
  for (i = 0; i < sizeof (s_3) / sizeof (s_3.s[0]); i++) { s_3.s[i] = i + 1; }
  u = add_struct_3 (u);
  return u;
}

Compiling this with arm-none-eabi-gcc gives : 

try.c: In function 'wack_struct_3':
try.c:41: error: address of register variable 'u' requested

3.4.5 and 4.0 seem to compile this ok. Its possibly related to the fix for
#18160 .


-- 
           Summary: Spurious parse error message with register struct .
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ramana dot radhakrishnan at codito dot com
 GCC build triplet: i686-linux-gnu
  GCC host triplet: i686-linux-gnu
GCC target triplet: arm-none-eabi


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26591

Reply via email to