target/10595: [ia64] use of register variables creates stop bits

wilson@gcc.gnu.org wilson@gcc.gnu.org
Thu May 8 05:24:00 GMT 2003


Synopsis: [ia64] use of register variables creates stop bits

Responsible-Changed-From-To: unassigned->wilson
Responsible-Changed-By: wilson
Responsible-Changed-When: Thu May  8 05:21:05 2003
Responsible-Changed-Why:
    IA-64 maintainer
State-Changed-From-To: open->analyzed
State-Changed-By: wilson
State-Changed-When: Thu May  8 05:21:05 2003
State-Changed-Why:
    There is a stop bit before the call because both alloc and br.call write to CFM (current frame marker).  If I modify the example so that there are more instructions before the call, then this problem does not show up.  For instance
    register long int r __asm ("r13");
    int i;
    int
    foo (long a)
    {
      i += 1;
      return bar(r);
    }
    Gives me
            st4 [r15] = r14
            mov r35 = r13
            br.call.sptk.many b0 = bar#
            ;;
    and now there is no stop bit immediately after the global register variable read.
    
    I don't have access to IA-64 hardware currently, so I can't easily examine the Linux thread library.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10595



More information about the Gcc-bugs mailing list