This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: gcc-2.95.2 compiler bug:
- To: "Martin v. Loewis" <martin at mira dot isdn dot cs dot tu-berlin dot de>
- Subject: Re: gcc-2.95.2 compiler bug:
- From: Tim Janik <timj at gtk dot org>
- Date: Sun, 17 Oct 1999 14:26:46 +0200 (CEST)
- cc: gcc-bugs at gcc dot gnu dot org, bug-gcc at gnu dot org
On Sun, 17 Oct 1999, Martin v. Loewis wrote:
> > hm, this one didn't get through because of size restrictions,
> > i'm sending you .gz files now.
>
> Ok, I can reproduce the problem. There is a serious bug in the code;
> you write
>
> BST_DEBUG (SAMPLES, {
> GList *free_list = bst_sample_repo_list_sample_locs (), *list;
>
> for (list = free_list; list; list = list->next)
> {
> BstSampleLoc *loc = list->data;
>
> g_print ("%s:: %s\n", loc->repo->name, loc->name);
> }
> g_list_free (free_list);
> });
>
> where BST_DEBUG is
>
> #define BST_DEBUG(type, code) G_STMT_START { \
> if (bst_debug_flags & BST_DEBUG_##type) \
> { code ; } \
> } G_STMT_END
>
> Now, the "second" parameter to BST_DEBUG has a number of commas in it,
> which result in many more macro argument. gcc complains but continues,
> giving the preprocessor output.
>
> (void)( { if (bst_debug_flags & BST_DEBUG_SAMPLES ) { {
> GList *free_list = bst_sample_repo_list_sample_locs () ; } } ) ;
>
> With that being fixed, gcc complains
>
> x.c:113: `BstSampleLoc' undeclared (first use in this function)
> x.c:113: (Each undeclared identifier is reported only once
> x.c:113: for each function it appears in.)
> x.c:113: `loc' undeclared (first use in this function)
>
> which also looks like a genuine bug in your code.
yep, you're right about the macro arguments, but this is not the code i actually
use, it was just an *intermediate* step that was supposed to fail compilation
with something like a parse error from gcc (i was just in the process of
gradually adding debugging support). but because it actually triggered
an internal compiler error, i stopped editing my sources and shrank it down
first to report the bug.
> Since the crash in gcc has an easy work-around (fix the code), it is
> unlikely that anything else will be done about it for gcc 2.95.x
well, it might not have highest priority to fix because its actually invalid
C that triggers the compiler error, but gcc certainly shouldn't *crash* on
this, right?
thanks anyways for your quick responses and looking into this.
>
> Hope this helps,
> Martin
>
>
---
ciaoTJ