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