develooper Front page | perl.perl5.porters | Postings from January 2008

ongoing cflags fun

Thread Next
From:
Nicholas Clark
Date:
January 26, 2008 09:37
Subject:
ongoing cflags fun
Message ID:
20080126164233.GY81396@plum.flirble.org
This is at change 33076:

$ make -C ext/DynaLoader DynaLoader.o
make: Entering directory `/home/nclark/Perl/33076-pedantic/ext/DynaLoader'
ccache gcc -c   -pedantic -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"1.0801\" -DXS_VERSION=\"1.0801\" -fPIC "-I../.."  -DLIBC="/lib/libc-2.3.6.so" DynaLoader.c
In file included from DynaLoader.xs:120:
../../perl.h:1602:40: warning: anonymous variadic macros were introduced in C99
../../perl.h:1614:41: warning: anonymous variadic macros were introduced in C99
DynaLoader.c: In function 'XS_DynaLoader_dl_load_file':
DynaLoader.c:227: warning: ISO C forbids braced-groups within expressions
DynaLoader.c: In function 'XS_DynaLoader_dl_unload_file':
DynaLoader.c:253: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:253: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:253: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:255: warning: ISO C forbids braced-groups within expressions
DynaLoader.c: In function 'XS_DynaLoader_dl_find_symbol':
DynaLoader.c:293: warning: ISO C forbids braced-groups within expressions
DynaLoader.c: In function 'XS_DynaLoader_dl_undef_symbols':
DynaLoader.c:312: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:312: warning: ISO C forbids braced-groups within expressions
DynaLoader.c: In function 'XS_DynaLoader_dl_install_xsub':
DynaLoader.c:346: warning: ISO C forbids braced-groups within expressions
DynaLoader.c: In function 'XS_DynaLoader_dl_error':
DynaLoader.c:368: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:368: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:370: warning: ISO C forbids braced-groups within expressions
DynaLoader.c: In function 'boot_DynaLoader':
DynaLoader.c:388: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:408: warning: ISO C forbids braced-groups within expressions
DynaLoader.c:408: warning: ISO C forbids braced-groups within expressions
make: Leaving directory `/home/nclark/Perl/33076-pedantic/ext/DynaLoader'

vs

$ make sv.o
`sh  cflags "optimize='-O2'" sv.o`  sv.c
          CCCMD =  ccache gcc -DPERL_CORE -c -DPERL_PATCHNUM=33076 -pedantic -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -std=c89 -O2  -Wall -ansi -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat -DPERL_GCC_PEDANTIC

The braced groups warnings start with this:

#line 226 "DynaLoader.c"
    }
    XSRETURN(1);
}

because of this:

#if !(defined(STMT_START) && defined(STMT_END))
# ifdef PERL_USE_GCC_BRACE_GROUPS
#   define STMT_START	(void)(	/* gcc supports "({ STATEMENTS; })" */
#   define STMT_END	)
# else

because of this

#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
#  ifndef PERL_USE_GCC_BRACE_GROUPS
#    define PERL_USE_GCC_BRACE_GROUPS
#  endif
#endif

because of this

/* gcc (-ansi) -pedantic doesn't allow gcc statement expressions,
 * g++ allows them but seems to have problems with them
 * (insane errors ensue). */
#if defined(PERL_GCC_PEDANTIC) || (defined(__GNUC__) && defined(__cplusplus))
#  ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
#    define PERL_GCC_BRACE_GROUPS_FORBIDDEN
#  endif
#endif


because cflags.sh doesn't set -DPERL_GCC_PEDANTIC outside the top level core
sources.

Mmm.

What should be done about that? It would be rather useful to have it set.

Nicholas Clark

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About