From: Uros Bizjak Date: Tue, 17 Aug 2010 14:25:52 +0000 (+0200) Subject: re PR target/45296 (register long double ICE at -O2, -Os, -O3) X-Git-Tag: releases/gcc-4.4.5~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38ea2727500fcc6c7b3cacd04b1ed3af1d553ae3;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8cfcc16bedb..a6321eefddf7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-08-17 Uros Bizjak + + PR target/45296 + * reginfo.c (globalize_reg): Reject stack registers. + 2010-08-16 John David Anglin Backport from mainline: diff --git a/gcc/reginfo.c b/gcc/reginfo.c index f9340ebb6b09..ed6373a3cd05 100644 --- a/gcc/reginfo.c +++ b/gcc/reginfo.c @@ -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"); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d52e206252cd..e757f5227980 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-08-17 Uros Bizjak + + PR target/45296 + * gcc.target/i386/pr45296.c: New test. + 2010-08-15 Uros Bizjak * g++.dg/cast.C: Change fields of structures to "long" to pass diff --git a/gcc/testsuite/gcc.target/i386/pr45296.c b/gcc/testsuite/gcc.target/i386/pr45296.c new file mode 100644 index 000000000000..307ee012aeb2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr45296.c @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-options "" } */ + +register long double F80 asm("st"); /* { dg-error "stack register" } */