[m68k] gcc-4.0: internal consistency failure
Bug #27375 reported by
Debian Bug Importer
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gcc-4.0 (Debian) |
Fix Released
|
Unknown
|
|||
gcc-4.0 (Ubuntu) |
Invalid
|
High
|
Matthias Klose |
Bug Description
Automatically imported from Debian bug report #344041 http://
Changed in gcc-4.0: | |
status: | Confirmed → Fix Released |
To post a comment you must log in.
Message-ID: <email address hidden>
Date: Mon, 19 Dec 2005 09:34:47 -0600
From: Stephen R Marenka <email address hidden>
To: <email address hidden>
Subject: [m68k] gcc-4.0: internal consistency failure
--MAH+hnPXVZWQ5cD/ "s9fJI615cBHmzT OP" Disposition: inline
Content-Type: multipart/mixed; boundary=
Content-
--s9fJI615cBHmzTOP Disposition: inline Transfer- Encoding: quoted-printable
Content-Type: text/plain; charset=us-ascii
Content-
Content-
Package: gcc-4.0
Version: 4.0.2-5
Severity: important
Recent versions of make fail with an error reproducible as follows.
$ gcc -O2 -c -o buggy.o buggy.c scope':
buggy.c: In function 'pop_variable_
buggy.c:62: fatal error: internal consistency failure
compilation terminated.
Workaround: change -O2 to -O1.
Hopefully, I've reduced this enough.
Thanks,
Stephen
--=20
Stephen R. Marenka If life's not fun, you're not doing it right!
<email address hidden>
--s9fJI615cBHmzTOP Disposition: attachment; filename="buggy.c"
Content-Type: text/x-csrc; charset=us-ascii
Content-
/* based on variable.c from make_3.80+3.81.b4-1 */
#define NULL 0
#include <assert.h>
struct variable_set
{
void * table; /* Hash table of variables. */
};
struct variable_set_list
{
struct variable_set_list *next; /* Link in the chain. */
struct variable_set *set; /* Variable set. */
};
extern struct variable_set_list *current_ variable_ set_list; variable_ set; variable_ set };
static struct variable_set global_
static struct variable_set_list global_setlist
= { 0, &global_
static void name_and_ value (const void *item)
free_variable_
{
}
void
pop_variable_scope (void)
{
struct variable_set_list *setlist;
struct variable_set *set;
/* Can't call this if there's no scope to pop! */ current_ variable_ set_list- >next != NULL);
assert(
if (current_ variable_ set_list != &global_setlist) variable_ set_list; variable_ set_list = setlist->next; setlist. next; setlist. set = setlist->set; setlist. next = setlist->next;
{
/* We're not pointing to the global setlist, so pop this one. */
setlist = current_
set = setlist->set;
current_
}
else
{
/* This set is the one in the global_setlist, but there is another global
set beyond that. We want to copy that set to global_setlist, then
delete what used to be in global_setlist. */
setlist = global_
set = global_setlist.set;
global_
global_
}
/* Free the one we no longer need. */ name_and_ value);
free ((char *) setlist);
hash_map (&set->table, free_variable_
hash_free (&set->table, 1);
free ((char *) set);
}
--s9fJI615cBHmz TOP--
--MAH+hnPXVZWQ5cD/ pgp-signature; name="signature .asc" Description: Digital signature Disposition: inline
Content-Type: application/
Content-
Content-
-----BEGIN PGP SIGNATURE-----
4J7YoSbMRAub8AJ wJZd7OSUYy6l2/ oKgECmN0+ ShlJQCfVNAX rxq1+smM=
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFDptMXVKM
dDSkJA1ZgQE8E1c
=4zgx
-----END PGP SIGNATURE-----
--MAH+hnPXVZWQ5 cD/--