bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#14572: Goto Label Bug


From: Shane Celis
Subject: bug#14572: Goto Label Bug
Date: Mon, 10 Jun 2013 12:06:01 -0400

Will do.  Thanks for your time, and sorry about my mistake.

-Shane

On Jun 7, 2013, at 5:16 PM, Mark H Weaver <address@hidden> wrote:

> Shane Celis <address@hidden> writes:
> 
>> If a goto label is followed by an SCM variable declaration, a
>> compilation error will result.  I've written up this piece of code
>> that demonstrates the behavior and how to work around it, available
>> here:
>> 
>> https://gist.github.com/shanecelis/5728982
> 
> In the future, please send the relevant information as attachments, so
> that it's recorded in our bug tracking system.  For posterity, here it
> is:
> 
> --8<---------------cut here---------------start------------->8---
> /*
>   This file demonstrates a bug with C goto labels and Guile.
> 
> $ gcc `pkg-config guile-2.0 --cflags --libs` goto_label_bug.c -o 
> goto_label_bug
> goto_label_bug.c: In function 'main':
> goto_label_bug.c:10: error: expected expression before 'SCM'
> 
> $ gcc `pkg-config guile-2.0 --cflags --libs` goto_label_bug.c -o 
> goto_label_bug -D INSERT_NOOP
> $ # No problem.
> 
> Shane Celis
> 
> */
> 
> #include <libguile.h>
> 
> int main(int argc, char *argv[]) {
>  scm_init_guile();
>  goto end;
> 
> end:
> #ifdef INSERT_NOOP
>  ;                             /* No error with dummy statement. */
> #endif
>  SCM dummy = SCM_BOOL_T;       /* Causes error. */
> 
>  return 0;
> }
> --8<---------------cut here---------------end--------------->8---
> 
> This is unrelated to Guile.  The same problem happens with GCC 4.7 if
> you make the following substitutions:
> 
>  libguile.h       --> stdio.h
>  scm_init_guile() --> printf ("Test\n");
>  SCM              --> int
>  SCM_BOOL_T       --> 0
> 
> However, in that case the error message is more helpful:
> 
>  error: a label can only be part of a statement and a declaration is not a 
> statement
> 
> Indeed, C99 section 6.8.1 specifies that labels may only precede
> statements.
> 
>    Regards,
>      Mark






reply via email to

[Prev in Thread] Current Thread [Next in Thread]