I'm getting the following assembler error with current gcc 4.3.  This
worked with 20070604 and is probably due to the dataflow merge.


[EMAIL PROTECTED]:~$ /usr/lib/gcc-snapshot/bin/gcc -c -O1 ccmalloc-callchain.c
ccmalloc-callchain.c: In function 'backtrace':
ccmalloc-callchain.c:14: warning: unsupported argument to
'__builtin_return_address'
/tmp/ccMB3CzF.s: Assembler messages:
/tmp/ccMB3CzF.s:10: Warning: Second operand of .save contradicts .prologue
/tmp/ccMB3CzF.s:17: Error: Register number out of range 0..1
/tmp/ccMB3CzF.s:17: Warning: Use of 'mov' violates WAW dependency 'GR%, % in 1
- 127' (impliedf), specific resource number is 33
/tmp/ccMB3CzF.s:17: Warning: Only the first path encountering the conflict is
reported
/tmp/ccMB3CzF.s:14: Warning: This is the location of the conflicting usage
/tmp/ccMB3CzF.s:39: Error: Register number out of range 0..1
/tmp/ccMB3CzF.s:60: Error: Register number out of range 0..1


Testcase:


typedef struct __jmp_buf_tag
{
}
jmp_buf[1];
static jmp_buf backtrace_jump;
static char *
return_address (unsigned i)
{
  switch (i)
    {
    case 0:
      return (char *) __builtin_return_address (0);
    case 1:
      return (char *) __builtin_return_address (1);
    }
}
backtrace (int skip)
{
  if (_setjmp (backtrace_jump) == 0)
    {
      int i = ++skip;
      while (1)
        {
          char *pc = return_address (i++);
          if (!pc)
            break;
        }
    }
}


-- 
           Summary: [4.3 Regression] Error: Register number out of range
                    0..1
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tbm at cyrius dot com
GCC target triplet: ia64-linux-gnu


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

Reply via email to