re PR target/45296 (register long double ICE at -O2, -Os, -O3)

PR target/45296
	* reginfo.c (globalize_reg): Reject stack registers.

testsuite/ChangeLog:

	PR target/45296
	* gcc.target/i386/pr45296.c: New test.

From-SVN: r163307
This commit is contained in:
Uros Bizjak 2010-08-17 16:25:52 +02:00 committed by Uros Bizjak
parent 934bee9e61
commit 38ea272750
4 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2010-08-17 Uros Bizjak <ubizjak@gmail.com>
PR target/45296
* reginfo.c (globalize_reg): Reject stack registers.
2010-08-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Backport from mainline:

View File

@ -842,6 +842,14 @@ fix_register (const char *name, int fixed, int call_used)
void
globalize_reg (int i)
{
#ifdef STACK_REGS
if (IN_RANGE (i, FIRST_STACK_REG, LAST_STACK_REG))
{
error ("stack register used for global register variable");
return;
}
#endif
if (fixed_regs[i] == 0 && no_global_reg_vars)
error ("global register variable follows a function definition");

View File

@ -1,3 +1,8 @@
2010-08-17 Uros Bizjak <ubizjak@gmail.com>
PR target/45296
* gcc.target/i386/pr45296.c: New test.
2010-08-15 Uros Bizjak <ubizjak@gmail.com>
* g++.dg/cast.C: Change fields of structures to "long" to pass

View File

@ -0,0 +1,4 @@
/* { dg-do compile } */
/* { dg-options "" } */
register long double F80 asm("st"); /* { dg-error "stack register" } */