mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-15 06:49:36 +08:00
re PR middle-end/23125 (OpenBSD's zic.c causes g++ but not gcc to segfault)
2005-10-04 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/23125 * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name instead of change_decl_assembler_name. 2005-10-04 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/23125 * c-decl.c (finish_decl): Use set_user_assembler_name even for register variables. * varasm.c (make_decl_rtl): If a register variable does not have a set user assmbler name, error out. Decode the asmspec is now name+1 bypassing '*'. 2005-10-04 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/23125 * gcc.dg/register-var-3.c: New test. From-SVN: r104942
This commit is contained in:
parent
46fbb29c2e
commit
11e3f4b6f7
@ -1,4 +1,13 @@
|
||||
2005-10-05 Steven Bosscher <stevenb@suse.de>
|
||||
2005-10-04 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR middle-end/23125
|
||||
* c-decl.c (finish_decl): Use set_user_assembler_name even for
|
||||
register variables.
|
||||
* varasm.c (make_decl_rtl): If a register variable does not
|
||||
have a set user assmbler name, error out.
|
||||
Decode the asmspec is now name+1 bypassing '*'.
|
||||
|
||||
2005-10-04 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
PR tree-optimization/23049
|
||||
* tree-ssa-dom.c (thread_across_edge): Make sure that the condition
|
||||
|
@ -3426,8 +3426,6 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
|
||||
&& !TREE_STATIC (decl))
|
||||
warning (0, "ignoring asm-specifier for non-static local "
|
||||
"variable %q+D", decl);
|
||||
else if (C_DECL_REGISTER (decl))
|
||||
change_decl_assembler_name (decl, get_identifier (asmspec));
|
||||
else
|
||||
set_user_assembler_name (decl, asmspec);
|
||||
}
|
||||
|
@ -1,3 +1,9 @@
|
||||
2005-10-04 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR middle-end/23125
|
||||
* decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
|
||||
instead of change_decl_assembler_name.
|
||||
|
||||
2005-10-03 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.
|
||||
|
@ -4661,7 +4661,7 @@ make_rtl_for_nonlocal_decl (tree decl, tree init, const char* asmspec)
|
||||
placed in a particular register. */
|
||||
if (TREE_CODE (decl) == VAR_DECL && DECL_REGISTER (decl))
|
||||
{
|
||||
change_decl_assembler_name (decl, get_identifier (asmspec));
|
||||
set_user_assembler_name (decl, asmspec);
|
||||
DECL_HARD_REGISTER (decl) = 1;
|
||||
}
|
||||
else
|
||||
|
@ -1,4 +1,9 @@
|
||||
2005-10-05 Steven Bosscher <stevenb@suse.de>
|
||||
2005-10-04 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR middle-end/23125
|
||||
* gcc.dg/register-var-3.c: New test.
|
||||
|
||||
2005-10-04 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* gcc.dg/pr23049.c: New test.
|
||||
|
||||
|
9
gcc/testsuite/gcc.dg/register-var-3.c
Normal file
9
gcc/testsuite/gcc.dg/register-var-3.c
Normal file
@ -0,0 +1,9 @@
|
||||
/* { dg-options "" } */
|
||||
/* { dg-do compile } */
|
||||
register int r0; /* { dg-error "register name not specified" } */
|
||||
register int bp; /* { dg-error "register name not specified" } */
|
||||
register int sp; /* { dg-error "register name not specified" } */
|
||||
register int r30; /* { dg-error "register name not specified" } */
|
||||
register int toc; /* { dg-error "register name not specified" } */
|
||||
register int d0; /* { dg-error "register name not specified" } */
|
||||
register int a0; /* { dg-error "register name not specified" } */
|
12
gcc/varasm.c
12
gcc/varasm.c
@ -923,10 +923,16 @@ make_decl_rtl (tree decl)
|
||||
}
|
||||
|
||||
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
|
||||
|
||||
if (TREE_CODE (decl) != FUNCTION_DECL && DECL_REGISTER (decl))
|
||||
|
||||
if (name[0] != '*' && TREE_CODE (decl) != FUNCTION_DECL
|
||||
&& DECL_REGISTER (decl))
|
||||
{
|
||||
reg_number = decode_reg_name (name);
|
||||
error ("register name not specified for %q+D", decl);
|
||||
}
|
||||
else if (TREE_CODE (decl) != FUNCTION_DECL && DECL_REGISTER (decl))
|
||||
{
|
||||
const char *asmspec = name+1;
|
||||
reg_number = decode_reg_name (asmspec);
|
||||
/* First detect errors in declaring global registers. */
|
||||
if (reg_number == -1)
|
||||
error ("register name not specified for %q+D", decl);
|
||||
|
Loading…
Reference in New Issue
Block a user