[svn:parrot] r44649 - in trunk: . compilers/imcc compilers/pirc/src config/auto config/auto/warnings config/gen config/gen/makefiles config/init config/init/hints config/inter lib/Parrot/Configure lib/Parrot/Configure/Step lib/Parrot/Docs lib/Parrot/Docs/Section src src/call src/dynpmc src/gc src/pmc src/runcore src/string t/configure t/steps/auto t/steps/gen tools/build
tene at svn.parrot.org
tene at svn.parrot.org
Fri Mar 5 16:20:10 UTC 2010
Author: tene
Date: Fri Mar 5 16:20:00 2010
New Revision: 44649
URL: https://trac.parrot.org/parrot/changeset/44649
Log:
Merge branch 'rm_cflags'
Added:
trunk/compilers/imcc/Rules.in
- copied, changed from r44637, trunk/compilers/imcc/Rules.mak
Deleted:
trunk/compilers/imcc/Rules.mak
trunk/config/gen/makefiles/CFLAGS.in
trunk/tools/build/cc_flags.pl
Modified:
trunk/MANIFEST
trunk/MANIFEST.SKIP
trunk/compilers/imcc/imcc.l
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/imclexer.c
trunk/compilers/imcc/imcparser.c
trunk/compilers/imcc/instructions.c
trunk/compilers/imcc/instructions.h
trunk/compilers/imcc/main.c
trunk/compilers/imcc/pbc.c
trunk/compilers/imcc/pbc.h
trunk/compilers/imcc/reg_alloc.c
trunk/compilers/imcc/symreg.c
trunk/compilers/pirc/src/pircapi.c
trunk/config/auto/cgoto.pm
trunk/config/auto/gcc.pm
trunk/config/auto/icu.pm
trunk/config/auto/perldoc.pm
trunk/config/auto/pmc.pm
trunk/config/auto/warnings.pm
trunk/config/auto/warnings/test_c.in
trunk/config/gen/makefiles.pm
trunk/config/gen/makefiles/dynoplibs.in
trunk/config/gen/makefiles/dynpmc.in
trunk/config/gen/makefiles/root.in
trunk/config/init/hints/darwin.pm
trunk/config/init/hints/mswin32.pm
trunk/config/init/optimize.pm
trunk/config/inter/charset.pm
trunk/config/inter/encoding.pm
trunk/config/inter/libparrot.pm
trunk/lib/Parrot/Configure/Compiler.pm
trunk/lib/Parrot/Configure/Step/List.pm
trunk/lib/Parrot/Docs/File.pm
trunk/lib/Parrot/Docs/Section/Tools.pm
trunk/src/call/args.c
trunk/src/debug.c
trunk/src/dynpmc/rational.pmc
trunk/src/embed.c
trunk/src/frame_builder.c
trunk/src/gc/mark_sweep.c
trunk/src/multidispatch.c
trunk/src/packfile.c
trunk/src/parrot_debugger.c
trunk/src/pbc_merge.c
trunk/src/pmc.c
trunk/src/pmc/callcontext.pmc
trunk/src/pmc/null.pmc
trunk/src/pmc/orderedhash.pmc
trunk/src/runcore/main.c
trunk/src/string/api.c
trunk/t/configure/034-step.t
trunk/t/steps/auto/cgoto-01.t
trunk/t/steps/auto/warnings-01.t
trunk/t/steps/gen/makefiles-01.t
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/MANIFEST Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,7 +1,7 @@
# ex: set ro:
# $Id$
#
-# generated by tools/dev/mk_manifest_and_skip.pl Fri Feb 26 18:33:15 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Mar 3 19:59:01 2010 UT
#
# See below for documentation on the format of this file.
#
@@ -34,7 +34,7 @@
compilers/data_json/data_json/grammar.pg [data_json]
compilers/data_json/data_json/pge2pir.tg [data_json]
compilers/imcc/Defines.mak [imcc]
-compilers/imcc/Rules.mak [imcc]
+compilers/imcc/Rules.in [imcc]
compilers/imcc/cfg.c [imcc]
compilers/imcc/cfg.h [imcc]
compilers/imcc/debug.c [imcc]
@@ -317,7 +317,6 @@
config/gen/crypto/digest_pmc.in []
config/gen/crypto/digest_t.in []
config/gen/makefiles.pm []
-config/gen/makefiles/CFLAGS.in []
config/gen/makefiles/docs.in []
config/gen/makefiles/dynoplibs.in []
config/gen/makefiles/dynpmc.in []
@@ -2132,7 +2131,6 @@
t/tools/testdata [test]
tools/build/addopstags.pl []
tools/build/c2str.pl []
-tools/build/cc_flags.pl []
tools/build/fixup_gen_file.pl []
tools/build/h2inc.pl []
tools/build/headerizer.pl []
Modified: trunk/MANIFEST.SKIP
==============================================================================
--- trunk/MANIFEST.SKIP Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/MANIFEST.SKIP Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,6 +1,6 @@
# ex: set ro:
# $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Mar 4 09:57:17 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Thu Mar 4 20:45:33 2010 UT
#
# This file should contain a transcript of the svn:ignore properties
# of the directories in the Parrot subversion repository. (Needed for
@@ -174,6 +174,8 @@
^compilers/imcc/.*\.tmp/
^compilers/imcc/CFLAGS$
^compilers/imcc/CFLAGS/
+^compilers/imcc/Rules\.mak$
+^compilers/imcc/Rules\.mak/
^compilers/imcc/imcc$
^compilers/imcc/imcc/
^compilers/imcc/imclexer\.c$
Copied and modified: trunk/compilers/imcc/Rules.in (from r44637, trunk/compilers/imcc/Rules.mak)
==============================================================================
--- trunk/compilers/imcc/Rules.mak Fri Mar 5 05:16:10 2010 (r44637, copy source)
+++ trunk/compilers/imcc/Rules.in Fri Mar 5 16:20:00 2010 (r44649)
@@ -90,7 +90,9 @@
$(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS)
+## SUFFIX OVERRIDE - Warnings (This is generated code)
compilers/imcc/imclexer$(O) : \
+ compilers/imcc/imclexer.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -102,8 +104,11 @@
compilers/imcc/unit.h \
$(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS)
+ $(CC) $(CFLAGS) @optimize::compilers/imcc/imclexer.c@ @ccwarn::compilers/imcc/imclexer.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c compilers/imcc/imclexer.c
+## SUFFIX OVERRIDE - Warnings (This is generated code)
compilers/imcc/imcparser$(O) : \
+ compilers/imcc/imcparser.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -118,6 +123,7 @@
$(INC_DIR)/dynext.h \
$(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS)
+ $(CC) $(CFLAGS) @optimize::compilers/imcc/imcparser.c@ @ccwarn::compilers/imcc/imcparser.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c compilers/imcc/imcparser.c
compilers/imcc/main$(O) : \
compilers/imcc/cfg.h \
@@ -136,7 +142,9 @@
$(INC_DIR)/runcore_api.h \
$(PARROT_H_HEADERS)
+## SUFFIX OVERRIDE - Warnings (This is generated code)
compilers/imcc/optimizer$(O) : \
+ compilers/imcc/optimizer.c \
compilers/imcc/cfg.h \
compilers/imcc/debug.h \
compilers/imcc/imc.h \
@@ -148,6 +156,7 @@
compilers/imcc/unit.h \
$(INC_DIR)/oplib/ops.h \
$(PARROT_H_HEADERS)
+ $(CC) $(CFLAGS) @optimize::compilers/imcc/optimizer.c@ @ccwarn::compilers/imcc/optimizer.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c compilers/imcc/optimizer.c
compilers/imcc/reg_alloc$(O) : \
compilers/imcc/cfg.h \
Deleted: trunk/compilers/imcc/Rules.mak
==============================================================================
--- trunk/compilers/imcc/Rules.mak Fri Mar 5 16:20:00 2010 (r44648)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,201 +0,0 @@
-compilers/imcc/pcc$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/imcparser.h \
- compilers/imcc/instructions.h \
- compilers/imcc/parser.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/instructions$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/pbc.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/pbc$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/pbc.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS) \
- include/pmc/pmc_sub.h
-
-compilers/imcc/parser_util$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/imcparser.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/parser.h \
- compilers/imcc/pbc.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/dynext.h \
- $(INC_DIR)/embed.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS) \
- include/pmc/pmc_sub.h
-
-compilers/imcc/imc$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/cfg$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/debug$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/imclexer$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/imcparser.h \
- compilers/imcc/instructions.h \
- compilers/imcc/parser.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/imcparser$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/imcparser.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/parser.h \
- compilers/imcc/pbc.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/dynext.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/main$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/imcparser.h \
- compilers/imcc/instructions.h \
- compilers/imcc/parser.h \
- compilers/imcc/pbc.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/embed.h \
- $(INC_DIR)/imcc.h \
- $(INC_DIR)/oplib/ops.h \
- $(INC_DIR)/runcore_api.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/optimizer$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/pbc.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/reg_alloc$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/optimizer.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/sets$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-compilers/imcc/symreg$(O) : \
- compilers/imcc/cfg.h \
- compilers/imcc/debug.h \
- compilers/imcc/imc.h \
- compilers/imcc/instructions.h \
- compilers/imcc/sets.h \
- compilers/imcc/symreg.h \
- compilers/imcc/unit.h \
- $(INC_DIR)/oplib/ops.h \
- $(PARROT_H_HEADERS)
-
-# imcc file dependencies
-#
-# The .flag files are needed because we keep some derived files in SVN,
-# which does not keep accurate timestamps on the files, relative to each other.
-# Note that YACC or LEX may be null commands, so we must `touch` all the
-# target files, instead of just the .flag files.
-
-compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h : compilers/imcc/imcc.y
- $(YACC) compilers/imcc/imcc.y -d -o compilers/imcc/imcparser.c
- $(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.c compilers/imcc/imcc.y
- $(PERL) $(BUILD_TOOLS_DIR)/fixup_gen_file.pl -noheaderizer compilers/imcc/imcparser.h compilers/imcc/imcc.y
- $(TOUCH) compilers/imcc/imcc.y.flag compilers/imcc/imcparser.c compilers/imcc/imcparser.h
-
-compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c : compilers/imcc/imcc.l
- $(LEX) -ocompilers/imcc/imclexer.c compilers/imcc/imcc.l
- $(TOUCH) compilers/imcc/imcc.l.flag compilers/imcc/imclexer.c
Modified: trunk/compilers/imcc/imcc.l
==============================================================================
--- trunk/compilers/imcc/imcc.l Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/imcc.l Fri Mar 5 16:20:00 2010 (r44649)
@@ -1019,7 +1019,6 @@
}
while (c != ENDM) {
- char *old_s = valp->s;
int elem_len;
if (c <= 0) {
Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/imcc.y Fri Mar 5 16:20:00 2010 (r44649)
@@ -5,7 +5,7 @@
* Intermediate Code Compiler for Parrot.
*
* Copyright (C) 2002 Melvin Smith <melvin.smith at mindspring.com>
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
*
* Grammar of the PIR language parser.
*
@@ -28,7 +28,7 @@
/* prevent declarations of malloc() and free() in the generated parser. */
#define YYMALLOC
-#define YYFREE
+#define YYFREE(Ptr) do { /* empty */; } while (YYID (0))
#ifndef YYENABLE_NLS
# define YYENABLE_NLS 0
Modified: trunk/compilers/imcc/imclexer.c
==============================================================================
--- trunk/compilers/imcc/imclexer.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/imclexer.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -5441,7 +5441,6 @@
}
while (c != ENDM) {
- char *old_s = valp->s;
int elem_len;
if (c <= 0) {
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/imcparser.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -87,7 +87,7 @@
* Intermediate Code Compiler for Parrot.
*
* Copyright (C) 2002 Melvin Smith <melvin.smith at mindspring.com>
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
*
* Grammar of the PIR language parser.
*
@@ -110,7 +110,7 @@
/* prevent declarations of malloc() and free() in the generated parser. */
#define YYMALLOC
-#define YYFREE
+#define YYFREE(Ptr) do { /* empty */; } while (YYID (0))
#ifndef YYENABLE_NLS
# define YYENABLE_NLS 0
Modified: trunk/compilers/imcc/instructions.c
==============================================================================
--- trunk/compilers/imcc/instructions.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/instructions.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,6 +1,6 @@
/*
* $Id$
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
*/
#include <stdlib.h>
@@ -50,7 +50,7 @@
__attribute__nonnull__(1)
__attribute__nonnull__(4);
-static int e_file_open(PARROT_INTERP, ARGIN(void *param))
+static int e_file_open(PARROT_INTERP, ARGIN(const char *file))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -785,7 +785,7 @@
/*
-=item C<static int e_file_open(PARROT_INTERP, void *param)>
+=item C<static int e_file_open(PARROT_INTERP, const char *file)>
Prints a message to STDOUT.
@@ -794,19 +794,19 @@
*/
static int
-e_file_open(PARROT_INTERP, ARGIN(void *param))
+e_file_open(PARROT_INTERP, ARGIN(const char *param))
{
ASSERT_ARGS(e_file_open)
- char * const file = (char *) param;
+ DECL_CONST_CAST;
- if (!STREQ(file, "-")) {
- FILE *newfile = freopen(file, "w", stdout);
+ if (!STREQ(param, "-")) {
+ FILE *newfile = freopen(param, "w", stdout);
if (!newfile)
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_EXTERNAL_ERROR,
"Cannot reopen stdout: %s'\n", strerror(errno));
}
- output = file;
+ output = PARROT_const_cast(char *, param);
Parrot_io_printf(interp, "# IMCC does produce b0rken PASM files\n");
Parrot_io_printf(interp, "# see http://guest@rt.perl.org/rt3/Ticket/Display.html?id=32392\n");
return 1;
@@ -862,7 +862,7 @@
/*
-=item C<int emit_open(PARROT_INTERP, int type, void *param)>
+=item C<int emit_open(PARROT_INTERP, int type, const char *param)>
Opens the emitter function C<open> of the given C<type>. Passes
the C<param> to the open function.
@@ -873,7 +873,7 @@
PARROT_EXPORT
int
-emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(void *param))
+emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
{
ASSERT_ARGS(emit_open)
IMCC_INFO(interp)->emitter = type;
Modified: trunk/compilers/imcc/instructions.h
==============================================================================
--- trunk/compilers/imcc/instructions.h Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/instructions.h Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,6 +1,6 @@
/*
* $Id$
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
*/
#ifndef PARROT_IMCC_INSTRUCTIONS_H_GUARD
@@ -79,7 +79,7 @@
/* Globals */
typedef struct _emittert {
- int (*open)(PARROT_INTERP, void *param);
+ int (*open)(PARROT_INTERP, const char *param);
int (*emit)(PARROT_INTERP, void *param, const IMC_Unit *, const Instruction *ins);
int (*new_sub)(PARROT_INTERP, void *param, IMC_Unit *);
int (*end_sub)(PARROT_INTERP, void *param, IMC_Unit *);
@@ -103,7 +103,7 @@
__attribute__nonnull__(3);
PARROT_EXPORT
-int emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(void *param))
+int emit_open(PARROT_INTERP, int type, ARGIN_NULLOK(const char *param))
__attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
Modified: trunk/compilers/imcc/main.c
==============================================================================
--- trunk/compilers/imcc/main.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/main.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -646,7 +646,7 @@
IMCC_push_parser_state(interp);
IMCC_INFO(interp)->state->file = mem_sys_strdup(sourcefile);
- emit_open(interp, per_pbc, per_pbc ? NULL : (void*)output_file);
+ emit_open(interp, per_pbc, per_pbc ? NULL : output_file);
IMCC_info(interp, 1, "Starting parse...\n");
Modified: trunk/compilers/imcc/pbc.c
==============================================================================
--- trunk/compilers/imcc/pbc.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/pbc.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -420,7 +420,7 @@
/*
-=item C<int e_pbc_open(PARROT_INTERP, void *param)>
+=item C<int e_pbc_open(PARROT_INTERP, const char *param)>
Opens a compilation unit to emit PBC.
@@ -429,7 +429,7 @@
*/
int
-e_pbc_open(PARROT_INTERP, SHIM(void *param))
+e_pbc_open(PARROT_INTERP, SHIM(const char *param))
{
ASSERT_ARGS(e_pbc_open)
code_segment_t * const cs = mem_gc_allocate_zeroed_typed(interp, code_segment_t);
Modified: trunk/compilers/imcc/pbc.h
==============================================================================
--- trunk/compilers/imcc/pbc.h Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/pbc.h Fri Mar 5 16:20:00 2010 (r44649)
@@ -28,7 +28,7 @@
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-int e_pbc_open(PARROT_INTERP, SHIM(void *param))
+int e_pbc_open(PARROT_INTERP, SHIM(const char *param))
__attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
Modified: trunk/compilers/imcc/reg_alloc.c
==============================================================================
--- trunk/compilers/imcc/reg_alloc.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/reg_alloc.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -613,8 +613,8 @@
reg_sort_f(ARGIN(const void *a), ARGIN(const void *b))
{
ASSERT_ARGS(reg_sort_f)
- const SymReg * const ra = *(SymReg**)a;
- const SymReg * const rb = *(SymReg**)b;
+ const SymReg * const ra = *(const SymReg * const *)a;
+ const SymReg * const rb = *(const SymReg * const *)b;
if (ra->first_ins->index < rb->first_ins->index)
return -1;
Modified: trunk/compilers/imcc/symreg.c
==============================================================================
--- trunk/compilers/imcc/symreg.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/imcc/symreg.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2002-2009, Parrot Foundation.
+ * Copyright (C) 2002-2010, Parrot Foundation.
* $Id$
*/
@@ -1004,7 +1004,7 @@
const char * const sub_name = (uniq == U_add_uniq_sub)
/* remember to free this name; add_ns malloc()s it */
? (aux_name = add_ns(interp, name))
- : (char *)name;
+ : name;
r = _get_sym(hsh, sub_name);
Modified: trunk/compilers/pirc/src/pircapi.c
==============================================================================
--- trunk/compilers/pirc/src/pircapi.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/compilers/pirc/src/pircapi.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -180,6 +180,7 @@
parse_string(PARROT_INTERP, ARGIN(char *pirstring), int flags, int pasminput,
unsigned macro_size)
{
+ ASSERT_ARGS(parse_string)
yyscan_t yyscanner;
lexer_state *lexer = NULL;
char name[64];
Modified: trunk/config/auto/cgoto.pm
==============================================================================
--- trunk/config/auto/cgoto.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/cgoto.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -22,10 +22,10 @@
sub _init {
my $self = shift;
- my %data;
- $data{description} = q{Does your compiler support computed goto};
- $data{result} = q{};
- return \%data;
+ return {
+ 'description' => 'Does your compiler support computed goto',
+ 'result' => '',
+ };
}
sub runstep {
@@ -58,29 +58,6 @@
my $verbose = $conf->options->get('verbose');
if ($test) {
$conf->data->set(
- TEMP_cg_h => '$(INC_DIR)/oplib/core_ops_cg.h $(INC_DIR)/oplib/core_ops_cgp.h',
- TEMP_cg_c => <<'EOF',
-# generated by config/auto/cgoto.pm
-
-src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
- include/pmc/pmc_parrotlibrary.h
-src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
- include/pmc/pmc_parrotlibrary.h
-src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
-
-$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
-
-src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
-
-$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
-
-src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
- $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
-EOF
- TEMP_cg_o => 'src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O)',
- TEMP_cg_r => '$(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
- $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c',
cg_flag => '-DHAVE_COMPUTED_GOTO'
);
print " (yes) " if $verbose;
@@ -88,10 +65,6 @@
}
else {
$conf->data->set(
- TEMP_cg_h => '',
- TEMP_cg_c => '',
- TEMP_cg_o => '',
- TEMP_cg_r => '',
cg_flag => ''
);
print " (no) " if $verbose;
Modified: trunk/config/auto/gcc.pm
==============================================================================
--- trunk/config/auto/gcc.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/gcc.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -85,14 +85,15 @@
$gccversion .= ".$minor" if defined $minor;
$self->set_result("yes, $gccversion");
- my $ccwarn = $conf->data->get('ccwarn');
-
$conf->data->set( sym_export => '__attribute__ ((visibility("default")))' )
if $gccversion >= 4.0 && !$conf->data->get('sym_export');
+ # sneaky check for g++
+ my $gpp = (index($conf->data->get('cc'), '++') > 0) ? 1 : 0;
+
$conf->data->set(
- ccwarn => "$ccwarn",
- gccversion => $gccversion,
+ gccversion => $gccversion,
+ 'g++' => $gpp,
);
return 1;
}
Modified: trunk/config/auto/icu.pm
==============================================================================
--- trunk/config/auto/icu.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/icu.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -339,8 +339,7 @@
if (! -d $icuheaders) {
$without = 1;
}
- my $slash = $conf->data->get('slash');
- $icuheaders .= "${slash}include";
+ $icuheaders .= "/include";
if (! -d $icuheaders) {
$without = 1;
}
Modified: trunk/config/auto/perldoc.pm
==============================================================================
--- trunk/config/auto/perldoc.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/perldoc.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -59,7 +59,6 @@
my $TEMP_pod = join q{ } =>
map { my $t = $_; $t =~ s/\.ops$/.pod/; "ops/$t" } @ops;
- my $slash = $conf->data->get('slash');
my $new_perldoc = $conf->data->get('new_perldoc');
foreach my $ops (@ops) {
@@ -67,17 +66,17 @@
$pod =~ s/\.ops$/.pod/;
if ( $new_perldoc ) {
$TEMP_pod_build .= <<"END"
-ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
-\t\$(PERLDOC_BIN) -ud ops${slash}$pod ..${slash}src${slash}ops${slash}$ops
-\t\$(CHMOD) 0644 ops${slash}$pod
+ops/$pod: ../src/ops/$ops
+\t\$(PERLDOC_BIN) -ud ops/$pod ../src/ops/$ops
+\t\$(CHMOD) 0644 ops/$pod
END
}
else {
$TEMP_pod_build .= <<"END"
-ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
-\t\$(PERLDOC_BIN) -u ..${slash}ops${slash}$ops > ops${slash}$pod
-\t\$(CHMOD) 0644 ..${slash}ops${slash}$pod
+ops/$pod: ../src/ops/$ops
+\t\$(PERLDOC_BIN) -u ../ops/$ops > ops/$pod
+\t\$(CHMOD) 0644 ../ops/$pod
END
}
Modified: trunk/config/auto/pmc.pm
==============================================================================
--- trunk/config/auto/pmc.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/pmc.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -90,6 +90,10 @@
}
}
my $include_headers = get_includes($pmc_fname);
+ my $cc_shared = $conf->data->get('cc_shared');
+ my $cc_o_out = $conf->data->get('cc_o_out');
+ my $warnings = $conf->data->get('ccwarn');
+ my $optimize = $conf->data->get('optimize');
$TEMP_pmc_build .= <<END
src/pmc/$pmc.c : src/pmc/$pmc.dump
@@ -100,20 +104,21 @@
include/pmc/pmc_$pmc.h: src/pmc/$pmc.c
-src/pmc/$pmc\$(O): include/pmc/pmc_${pmc}.h src/pmc/$pmc.str \$(NONGEN_HEADERS) \\
+## SUFFIX OVERRIDE -Warnings
+src/pmc/$pmc\$(O): include/pmc/pmc_$pmc.h src/pmc/$pmc.str \$(NONGEN_HEADERS) \\
$parent_headers $include_headers include/pmc/pmc_continuation.h \\
- include/pmc/pmc_callcontext.h include/pmc/pmc_fixedintegerarray.h
+ include/pmc/pmc_callcontext.h include/pmc/pmc_fixedintegerarray.h \\
+ src/pmc/$pmc.c
+\t\$(CC) \$(CFLAGS) $optimize $cc_shared $warnings -I\$(\@D) $cc_o_out \$@ -c src/pmc/$pmc.c
END
}
- # src/pmc/$pmc\$(O): \$(NONGEN_HEADERS) $parent_headers include/pmc/pmc_$pmc.h
# build list of libraries for link line in Makefile
- my $slash = $conf->data->get('slash');
- ( my $TEMP_pmc_classes_o = $TEMP_pmc_o ) =~ s/^| / src${slash}pmc${slash}/g;
- ( my $TEMP_pmc_classes_str = $TEMP_pmc_str ) =~ s/^| / src${slash}pmc${slash}/g;
- ( my $TEMP_pmc_classes_pmc = $pmc_list ) =~ s/^| / src${slash}pmc${slash}/g;
+ ( my $TEMP_pmc_classes_o = $TEMP_pmc_o ) =~ s{^| }{ src/pmc/}g;
+ ( my $TEMP_pmc_classes_str = $TEMP_pmc_str ) =~ s{^| }{ src/pmc/}g;
+ ( my $TEMP_pmc_classes_pmc = $pmc_list ) =~ s{^| }{ src/pmc/}g;
# Gather the actual names (with MixedCase) of all of the non-abstract
# built-in PMCs in rough hierarchical order.
Modified: trunk/config/auto/warnings.pm
==============================================================================
--- trunk/config/auto/warnings.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/warnings.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,17 +1,14 @@
-# Copyright (C) 2007-2008, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
# $Id$
=head1 NAME
-config/auto/warnings.pm - Warning flags detection
+config/auto/warnings.pm - Warning flags probing.
=head1 DESCRIPTION
-Automagically detect what warning flags, like -Wall, -Wextra,
--Wchar-subscripts, etc., that the compiler can support. Directly hacked
-from F<config/auto/attributes.pm>.
-
-=head1 SUBROUTINES
+Given a list of potential warnings available for a certain type of
+compiler, probe to see which of those are valid for this particular version.
=over 4
@@ -22,21 +19,86 @@
use strict;
use warnings;
-
use base qw(Parrot::Configure::Step);
use Parrot::Configure::Utils ();
use Parrot::BuildUtil;
+=item C<_init>
+
+Declare potential warnings for various compilers. Note that the compiler
+key used here doesn't really exist in a unified way in Configure - would
+be nice if it did so we could simplify our checks in runstep().
+
+We create a data structure here that breaks out the warnings by compiler,
+using this structure:
+
+warnings:
+ gcc:
+ basic:
+ - -Warning1
+ - -Warning2
+ cage:
+ - -Warning3
+ - -Warning4
+ only:
+ - -Warning5:
+ - foo.c
+ - bar.c
+ never:
+ - -Warning6:
+ - baz.c
+ - frob.c
+ todo:
+ - -Warning7:
+ - cow.c
+ - pig.c
+ g++:
+ ...
+
+'basic' warnings are always used.
+
+'cage' warnings are added only if --cage is specified during
+Configure. This can be used to hold warnings that aren't ready to be
+added to the default run yet.
+
+'only' should be used as we add new warnings to the build, it will let
+us insure that files we know are clean for a new warning stay clean.
+
+'never' should be used when a particular file contains generated code
+(e.g. imcc) and we cannot update it to conform to the standards.
+
+'todo' functions just like never does, but it indicates that these
+files are expected to eventually be free of this warning.
+
+Note that there is no actual requirement that the 'file' be a full path
+to a .c file; the file could be "PMCS" or "OPS" or some other identifier;
+whatever the value, it will generate a Config entry prefixed with
+C<ccwarn::>, which will probably be used via @@ expansion in a makefile.
+
+It is tempting to put this into a config file, but having it in
+perl gives us the ability to dynamically setup certain warnings based
+on any criteria already discovered via Config.
+
+Order is important - some warnings are invalid unless they are specified
+after other warnings.
+
+=cut
+
sub _init {
my $self = shift;
- my %data;
- $data{description} = q{Detect supported compiler warnings};
- $data{result} = q{};
-
- # Please keep these sorted by flag name, such that "-Wno-foo" is
- # sorted as "-Wfoo", so we can turn off/on as needed.
- my @potential_warnings = qw(
+
+ my $data = {
+ description => 'Detect supported compiler warnings',
+ result => '',
+ validated => [],
+ };
+
+ # begin gcc/g++
+ my $gcc = {};
+ my $gpp = {};
+
+ my @gcc_or_gpp = qw(
-falign-functions=16
-fvisibility=hidden
-funit-at-a-time
@@ -49,6 +111,7 @@
-Wchar-subscripts
-Wcomment
-Wdisabled-optimization
+ -Wdiv-by-zero
-Wendif-labels
-Wextra
-Wformat
@@ -79,13 +142,17 @@
-Wswitch-default
-Wtrigraphs
-Wundef
- -Wunknown-pragmas
-Wno-unused
+ -Wunknown-pragmas
-Wvariadic-macros
-Wwrite-strings
- -Wnot-a-real-warning
);
- my @potential_warnings_no_cpp = qw(
+
+ $gcc->{'basic'} = [ @gcc_or_gpp ];
+ $gpp->{'basic'} = [ @gcc_or_gpp ];
+
+ # Add some gcc only warnings that would break g++
+ push @{$gcc->{'basic'}}, qw(
-Wbad-function-cast
-Wc++-compat
-Wdeclaration-after-statement
@@ -101,7 +168,7 @@
-Wstrict-prototypes
);
- my @cage_warnings = qw(
+ my $gcc_or_gpp_cage = [ qw(
-std=c89
-Werror-implicit-function-declaration
-Wformat=2
@@ -109,41 +176,53 @@
-Wlong-long
-Wmissing-format-attribute
-Wdeprecated-declarations
- -Wdiv-by-zero
-Wno-format-extra-args
-Wno-import
-Wno-multichar
-Wno-pointer-sign
- -Wold-style-definition
-Wunreachable-code
+ -Wunused
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable
- );
+ ) ];
- my @may_not_even_be_interesting = qw(
- -Wpadded
- -Wredundant-decls
- -Wswitch-enum
- -Wsystem-headers
- );
+ $gcc->{'cage'} = $gcc_or_gpp_cage;
+ $gpp->{'cage'} = $gcc_or_gpp_cage;
- my @nice_to_have_but_too_noisy_for_now = qw(
- -pedantic
- -Wconversion
- -Wint-to-pointer-cast
- -Wmissing-noreturn
- -Wshadow
- -Wunused-macros
- -Wunused-parameter
- );
+ $gcc->{'todo'} = $gpp->{'todo'} = {
+ '-Wformat-nonliteral' => [
+ 'src/spf_render.c',
+ 'compilers/imcc/optimizer.c',
+ ],
+ '-Wstrict-prototypes' => [
+ 'src/nci/extra_thunks.c',
+ 'src/extra_nci_thunks.c',
+ ],
+ };
+
+ $gcc->{'never'} = $gpp->{'never'} = {
+ '-Wformat-nonliteral' => [
+ 'compilers/imcc/imclexer.c',
+ ],
+ '-Wswitch-default' => [
+ 'compilers/imcc/imclexer.c',
+ ],
+ '-Wcast-qual' => [
+ 'compilers/imcc/imcparser.c',
+ ],
+ '-Wlogical-op' => [
+ 'compilers/imcc/imcparser.c',
+ ],
+ };
+
+ $data->{'warnings'}{'gcc'} = $gcc;
+ $data->{'warnings'}{'g++'} = $gpp;
- $data{potential_warnings} = \@potential_warnings;
- $data{potential_warnings_no_cpp} = \@potential_warnings_no_cpp;
- $data{cage_warnings} = \@cage_warnings;
+ ## end gcc/g++
- return \%data;
+ return $data;
}
sub runstep {
@@ -151,53 +230,64 @@
my $verbose = $conf->options->get('verbose');
print "\n" if $verbose;
+
+ my $compiler = '';
if ( defined $conf->data->get('gccversion') ) {
+ $compiler = $conf->data->get('g++') ? 'g++' : 'gcc';
+ }
- # Dirty way of checking if compiling with c++
- my $nocpp = index($conf->data->get('cc'), '++') < 0;
+ if ($compiler eq '') {
+ print "We do not (yet) probe for warnings for your compiler\n"
+ if $verbose;
+ $self->set_result('skipped');
+ return 1;
+ }
- # add on some extra warnings if requested
- $self->_add_cage_warnings($conf);
- $self->_add_maintainer_warnings($conf);
-
- # now try out our warnings
- for my $maybe_warning (@{ $self->{potential_warnings} }) {
- $self->try_warning( $conf, $maybe_warning, $verbose );
- }
- if ($nocpp) {
- for my $maybe_warning (@{ $self->{potential_warnings_no_cpp} }) {
- $self->try_warning( $conf, $maybe_warning, $verbose );
+ # standard warnings.
+ my @warnings = grep {$self->valid_warning($conf, $_)}
+ @{$self->{'warnings'}{$compiler}{'basic'}};
+
+ # --cage?
+ if ($conf->options->get('cage')) {
+ push @warnings, grep {$self->valid_warning($conf, $_)}
+ @{$self->{'warnings'}{$compiler}{'cage'}}
+ }
+
+ # -- only?
+ my %per_file;
+ if (exists $self->{'warnings'}{$compiler}{'only'}) {
+ my %only = %{$self->{'warnings'}{$compiler}{'only'}};
+ foreach my $warning (keys %only) {
+ next unless $self->valid_warning($conf, $warning);
+ foreach my $file (@{$only{$warning}}) {
+ $per_file{$file} = [ @warnings ] unless exists $per_file{$file};
+ push @{$per_file{$file}}, $warning;
}
}
+ }
- if ($nocpp) {
- $self->set_result("set for gcc");
- }
- else {
- $self->set_result("set for g++");
+ foreach my $key (qw/todo never/) {
+ if (exists $self->{'warnings'}{$compiler}{$key}) {
+ my %dont = %{$self->{'warnings'}{$compiler}{$key}};
+ foreach my $warning (keys %dont) {
+ foreach my $file (@{$dont{$warning}}) {
+ $per_file{$file} = [ @warnings ] unless exists $per_file{$file};
+ @{$per_file{$file}} = grep {$warning ne $_} @{$per_file{$file}};
+ }
+ }
}
}
- else {
- print "Currently we only set warnings if using gcc as C compiler\n"
- if $verbose;
- $self->set_result("skipped");
- }
- return 1;
-}
-sub _add_cage_warnings {
- my ($self, $conf) = @_;
- push @{ $self->{potential_warnings} }, @{ $self->{cage_warnings} }
- if $conf->options->get('cage');
-}
+ $conf->data->set('ccwarn', join(' ', @warnings));
+ foreach my $file (keys %per_file) {
+ $conf->data->set("ccwarn::$file", join(' ', @{$per_file{$file}}));
+ }
-sub _add_maintainer_warnings {
- my ($self, $conf) = @_;
- push @{ $self->{potential_warnings} }, '-Wlarger-than-4096'
- if $conf->options->get('maintainer');
+ $self->set_result('done');
+ return 1;
}
-=item C<try_warning>
+=item C<valid_warning>
Try a given warning to see if it is supported by the compiler. The compiler
is determined by the C<cc> value of the C<Parrot::Configure> object passed
@@ -207,11 +297,17 @@
Returns true if the warning flag is recognized by the compiler and undef
otherwise.
+Use the running set of known valid options, since some options may depend
+on previous options.
+
=cut
-sub try_warning {
- my ( $self, $conf, $warning, $verbose ) = @_;
+sub valid_warning {
+ my ( $self, $conf, $warning ) = @_;
+
+ my $verbose = $conf->options->get('verbose');
+ # This should be using a temp file name.
my $output_file = 'test.cco';
$verbose and print "trying attribute '$warning'\n";
@@ -220,17 +316,18 @@
$conf->cc_gen('config/auto/warnings/test_c.in');
my $ccflags = $conf->data->get('ccflags');
- my $tryflags = "$ccflags $warning";
+ my $warnings = join(' ', @{$self->{'validated'}});
+ my $tryflags = "$ccflags $warnings $warning";
my $command_line = Parrot::Configure::Utils::_build_compile_command( $cc, $tryflags );
- $verbose and print " ", $command_line, "\n";
+ $verbose and print ' ', $command_line, "\n";
# Don't use cc_build, because failure is expected.
my $exit_code = Parrot::Configure::Utils::_run_command(
$command_line, $output_file, $output_file
);
- _set_warning($conf, $warning, $exit_code, $verbose);
+ # Cleanup any remnants of the test compilation
$conf->cc_clean();
if ($exit_code) {
@@ -240,35 +337,22 @@
my $output = Parrot::BuildUtil::slurp_file($output_file);
unlink $output_file or die "Unable to unlink $output_file: $!";
- return _set_ccflags($conf, $output, $tryflags, $verbose);
-}
-
-sub _set_warning {
- my ($conf, $warning, $exit_code, $verbose) = @_;
- $verbose and print " exit code: $exit_code\n";
- $conf->data->set( $warning => !$exit_code || 0 );
-}
-sub _set_ccflags {
- my ($conf, $output, $tryflags, $verbose) = @_;
$verbose and print " output: $output\n";
if ( $output !~ /error|warning|not supported/i ) {
- $conf->data->set( ccflags => $tryflags );
- $verbose and print " ccflags: ", $conf->data->get("ccflags"), "\n";
+ push @{$self->{'validated'}}, $warning;
+ $verbose and print " valid warning: '$warning'\n";
return 1;
}
else {
+ $verbose and print " invalid warning: '$warning'\n";
return 0;
}
}
=back
-=head1 AUTHOR
-
-Paul Cochrane <paultcochrane at gmail dot com>
-
=cut
1;
Modified: trunk/config/auto/warnings/test_c.in
==============================================================================
--- trunk/config/auto/warnings/test_c.in Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/auto/warnings/test_c.in Fri Mar 5 16:20:00 2010 (r44649)
@@ -6,11 +6,10 @@
#include <stdio.h>
#include <stdlib.h>
-#include "parrot/compiler.h"
/* as long as the file compiles, everything is okay */
int
-main()
+main(void)
{
return EXIT_SUCCESS;
}
Modified: trunk/config/gen/makefiles.pm
==============================================================================
--- trunk/config/gen/makefiles.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/gen/makefiles.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -27,12 +27,18 @@
$data{description} = q{Generate makefiles and other build files};
$data{result} = q{};
$data{makefiles} = {
- 'Makefile' => { SOURCE => 'config/gen/makefiles/root.in' },
- 'ext/Makefile' => { SOURCE => 'config/gen/makefiles/ext.in', },
+ 'Makefile' => {
+ SOURCE => 'config/gen/makefiles/root.in',
+ },
+ 'ext/Makefile' => {
+ SOURCE => 'config/gen/makefiles/ext.in',
+ },
+ 'compilers/imcc/Rules.mak' => {
+ SOURCE => 'compilers/imcc/Rules.in',
+ },
'ext/Parrot-Embed/Makefile.PL' => {
SOURCE => 'config/gen/makefiles/parrot_embed_pl.in',
- replace_slashes => 0,
conditioned_lines => 1,
},
@@ -48,7 +54,6 @@
'parrot.pc' => { SOURCE => 'config/gen/makefiles/parrot_pc.in' },
'docs/Makefile' => { SOURCE => 'config/gen/makefiles/docs.in' },
};
- $data{CFLAGS_source} = 'config/gen/makefiles/CFLAGS.in';
return \%data;
}
@@ -56,36 +61,10 @@
my ( $self, $conf ) = @_;
$self->makefiles($conf);
- $self->cflags($conf);
return 1;
}
-sub cflags {
- my ( $self, $conf ) = @_;
-
- $conf->genfile( $self->{CFLAGS_source} => 'CFLAGS',
- comment_type => '#'
- );
-
- open( my $CFLAGS, ">>", "CFLAGS" ) or die "open >> CFLAGS: $!";
-
- # Why is this here? I'd think this information belongs
- # in the CFLAGS.in file. -- A.D. March 12, 2004
- if ( $conf->data->get('cpuarch') =~ /sun4|sparc64/ ) {
-
- # CFLAGS entries must be left-aligned.
- print {$CFLAGS} <<"EOF";
-src/jit_cpu.c -{-Wcast-align} # lots of noise!
-src/nci.c -{-Wstrict-prototypes} # lots of noise!
-EOF
- }
-
- close $CFLAGS;
-
- return;
-}
-
sub makefiles {
my ( $self, $conf ) = @_;
@@ -96,7 +75,6 @@
: keys %{ $self->{makefiles} };
foreach my $target (@targets) {
- $target =~ s/\\/\//g if $^O eq 'MSWin32';
my $args = $self->{makefiles}->{$target};
my $source = delete $args->{SOURCE};
Deleted: trunk/config/gen/makefiles/CFLAGS.in
==============================================================================
--- trunk/config/gen/makefiles/CFLAGS.in Fri Mar 5 16:20:00 2010 (r44648)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,36 +0,0 @@
-# [ filename | {regex} ] -{removed options} +{added options} s/// ...
-#
-# Avoid using non-configure controlled +{} directly in this file, as
-# it'll most likely break on other platforms.
-#
-# Note, empty regex/options are just ignored.
-#
-src/platform.c -{-Wcast-qual} # noisy
-src/spf_render.c -{-Wformat-nonliteral} # noisy
-
-# The src/ops/core_ops*.c files are challenging to optimize.
-# gcc can usually handle it, but don't assume any other compilers can,
-# until there is specific evidence otherwise.
-#UNLESS(gccversion):src/ops/core_ops_cg.c -{@optimize@}
-#UNLESS(gccversion):src/ops/core_ops_cgp.c -{@optimize@}
-#UNLESS(gccversion):src/ops/core_ops_switch.c -{@optimize@}
-
-#IF(cpuarch==amd64):src/gc/system.c -{@optimize@} # TT #405 amd64 --optimize problem
-
-# io should be -Wunused clean
-{^src/io/} s/-Wno-unused/-Wunused/
-
-# files which make their way into dynamically loaded files should be compiled
-# with shared library options
-src/extend.c +{@cc_shared@}
-src/nci_test.c +{@cc_shared@}
-
-# imcc file settings
-{^compilers/imcc/} -{-Wwrite-strings -Wcast-qual}
-{^compilers/imcc/(?!imclexer)} s/-Wno-unused/-Wunused/
-compilers/imcc/instructions.c -{-Wformat-nonliteral} # noisy
-compilers/imcc/debug.c -{-Wformat-nonliteral} # noisy
-compilers/imcc/optimizer.c -{-Wformat-nonliteral} # noisy
-compilers/imcc/parser_util.c -{-Wformat-nonliteral} # noisy
-compilers/imcc/imclexer.c -{-Wunused} # noisy
-compilers/imcc/imclexer.c -{-Wswitch-default} # occurs in generated code
Modified: trunk/config/gen/makefiles/dynoplibs.in
==============================================================================
--- trunk/config/gen/makefiles/dynoplibs.in Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/gen/makefiles/dynoplibs.in Fri Mar 5 16:20:00 2010 (r44649)
@@ -14,12 +14,12 @@
LD = @ld@
LDFLAGS = @ldflags@ @ld_debug@ @rpath_blib@ @linkflags@
LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+CFLAGS = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ @optimize@
LIBPARROT = @libparrot_ldflags@
-BUILD_TOOLS_DIR = $(BUILD_DIR)@slash at tools@slash at build
-OPS2C = $(PERL) -I$(BUILD_DIR)@slash at lib $(BUILD_TOOLS_DIR)@slash at ops2c.pl
-INCLUDES = -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at src@slash at pmc
+BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
+OPS2C = $(PERL) -I$(BUILD_DIR)/lib $(BUILD_TOOLS_DIR)/ops2c.pl
+INCLUDES = -I$(BUILD_DIR)/include -I at build_dir@/src/pmc
LINKARGS = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
OPS_TARGETS = \
Modified: trunk/config/gen/makefiles/dynpmc.in
==============================================================================
--- trunk/config/gen/makefiles/dynpmc.in Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/gen/makefiles/dynpmc.in Fri Mar 5 16:20:00 2010 (r44649)
@@ -8,19 +8,19 @@
LOAD_EXT = @load_ext@
BUILD_DIR = @build_dir@
RECONFIGURE = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-INSTALL_DIR = $(BUILD_DIR)@slash at runtime@slash at parrot@slash at dynext
+INSTALL_DIR = $(BUILD_DIR)/runtime/parrot/dynext
O = @o@
CC = @cc@
LD = @ld@
LDFLAGS = @ldflags@ @ld_debug@ @rpath_blib@
LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@
+CFLAGS = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @cg_flag@ @gc_flag@ @optimize@
LIBPARROT = @libparrot_ldflags@
-BUILD_TOOLS_DIR = $(BUILD_DIR)@slash at tools@slash at build
-BUILD_LIB_DIR = $(BUILD_DIR)@slash at blib@slash at lib
-PMC2C = $(PERL) $(BUILD_TOOLS_DIR)@slash at pmc2c.pl
-INCLUDES = -I$(BUILD_DIR)@slash at include -I at build_dir@@slash at include@slash at pmc
+BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
+BUILD_LIB_DIR = $(BUILD_DIR)/blib/lib
+PMC2C = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl
+INCLUDES = -I$(BUILD_DIR)/include -I at build_dir@/include/pmc
LINKARGS = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump
Modified: trunk/config/gen/makefiles/root.in
==============================================================================
--- trunk/config/gen/makefiles/root.in Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/gen/makefiles/root.in Fri Mar 5 16:20:00 2010 (r44649)
@@ -82,7 +82,9 @@
CC_INC = @cc_inc@
C_LIBS = @libs@
CC_SHARED = @cc_shared@
-CFLAGS = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @ccwarn@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
+CC_O_OUT = @cc_o_out@
+CC_WARN = @ccwarn@
+CFLAGS = $(CC_INC) @ccflags@ @cc_build_call_frames@ @cc_debug@ @cg_flag@ @gc_flag@ @clock_best@ $(CC_SHARED)
LINK_DYNAMIC = @link_dynamic@
LINK = @link@
LINKFLAGS = @linkflags@ @link_debug@ @ld_debug@
@@ -140,7 +142,8 @@
editor/Makefile \
ext/Makefile \
src/dynoplibs/Makefile \
- src/dynpmc/Makefile
+ src/dynpmc/Makefile \
+ compilers/imcc/Rules.mak
GEN_CONFIGS = \
$(INC_DIR)/config.h \
@@ -177,8 +180,6 @@
#IF(has_crypto): t/dynpmc/sha1.t \
#IF(has_crypto): t/dynpmc/sha256.t \
#IF(has_crypto): t/dynpmc/sha512.t \
- CFLAGS \
- compilers/imcc/CFLAGS \
config_lib.pasm \
parrot.pc \
compilers/imcc/imcc.y.flag \
@@ -407,7 +408,9 @@
include/pmc/pmc_parrotinterpreter.h
# generated list of header files
-GENERAL_H_FILES = $(NONGEN_HEADERS) $(GEN_HEADERS) @TEMP_cg_h@
+GENERAL_H_FILES = $(NONGEN_HEADERS) $(GEN_HEADERS) \
+#IF(cg_flag): $(INC_DIR)/oplib/core_ops_cg.h $(INC_DIR)/oplib/core_ops_cgp.h
+
CHARSET_O_FILES = @TEMP_charset_o@
CLASS_PMC_FILES = @TEMP_pmc_classes_pmc@
@@ -493,13 +496,12 @@
src/utils$(O) \
src/vtables$(O) \
src/warnings$(O) \
- \
src/packfile/pf_items$(O) \
- \
- @TEMP_cg_o@ \
@TEMP_atomic_o@ \
@TEMP_gc_o@ \
#IF(platform_asm): src/platform_asm$(O) \
+#IF(cg_flag): src/ops/core_ops_cg$(O) src/ops/core_ops_cgp$(O) \
+
OPS_FILES = @ops@ $(GEN_OPSFILES)
@@ -510,27 +512,27 @@
###############################################################################
# Executables
-PARROT = ./@test_prog@$(EXE)
-MINIPARROT = ./miniparrot$(EXE)
-DIS = ./pbc_disassemble$(EXE)
-PDUMP = ./pbc_dump$(EXE)
-PBC_MERGE = ./pbc_merge$(EXE)
-PDB = ./parrot_debugger$(EXE)
-PBC_TO_EXE = ./pbc_to_exe$(EXE)
-PARROT_CONFIG = ./parrot_config$(EXE)
-PIRC = ./pirc$(EXE)
-NQP_RX = ./parrot-nqp$(EXE)
+PARROT = . at slash@@test_prog@$(EXE)
+MINIPARROT = . at slash@miniparrot$(EXE)
+DIS = . at slash@pbc_disassemble$(EXE)
+PDUMP = . at slash@pbc_dump$(EXE)
+PBC_MERGE = . at slash@pbc_merge$(EXE)
+PDB = . at slash@parrot_debugger$(EXE)
+PBC_TO_EXE = . at slash@pbc_to_exe$(EXE)
+PARROT_CONFIG = . at slash@parrot_config$(EXE)
+PIRC = . at slash@pirc$(EXE)
+NQP_RX = . at slash@parrot-nqp$(EXE)
NCI_THUNK_GEN = ./parrot_nci_thunk_gen$(EXE)
# Installable executables
-INSTALLABLEPARROT = ./installable_parrot$(EXE)
-INSTALLABLEDIS = ./installable_pbc_disassemble$(EXE)
-INSTALLABLEPDUMP = ./installable_pbc_dump$(EXE)
-INSTALLABLEPBC_MERGE = ./installable_pbc_merge$(EXE)
-INSTALLABLEPBCTOEXE = ./installable_pbc_to_exe$(EXE)
-INSTALLABLEPDB = ./installable_parrot_debugger$(EXE)
-INSTALLABLECONFIG = ./installable_parrot_config$(EXE)
-INSTALLABLENQP = ./installable_parrot-nqp$(EXE)
+INSTALLABLEPARROT = . at slash@installable_parrot$(EXE)
+INSTALLABLEDIS = . at slash@installable_pbc_disassemble$(EXE)
+INSTALLABLEPDUMP = . at slash@installable_pbc_dump$(EXE)
+INSTALLABLEPBC_MERGE = . at slash@installable_pbc_merge$(EXE)
+INSTALLABLEPBCTOEXE = . at slash@installable_pbc_to_exe$(EXE)
+INSTALLABLEPDB = . at slash@installable_parrot_debugger$(EXE)
+INSTALLABLECONFIG = . at slash@installable_parrot_config$(EXE)
+INSTALLABLENQP = . at slash@installable_parrot-nqp$(EXE)
INSTALLABLENCITHUNKGEN = ./installable_parrot_nci_thunk_gen$(EXE)
# Libraries
@@ -569,24 +571,27 @@
.SUFFIXES : .c .S .s .pmc .dump $(O) .str .pir .pbc
-# Passing an empty argument in @ARGV to cc_flags.pl to indicate where extra -Is
-# (etc) should go. Otherwise it will insert them after the first space, which
-# makes life go horribly wrong if $(CC) contains spaces but can't have -I
-# arguments (etc) injected in the middle.
-# There is probably a better way to do this, but I can't work it out right now.
.c$(O) : # suffix rule (limited support)
- @$(PERL) tools/build/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
-
-# XXX probably should detect assembler, but right now this is only used on Sparc
+ $(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
.s$(O) : # suffix rule (limited support)
- @$(PERL) tools/build/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
+ $(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
#UNLESS(win32).S$(O) : # suffix rule (limited support)
-#UNLESS(win32) @$(PERL) tools/build/cc_flags.pl ./CFLAGS $(CC) "" $(CFLAGS) -I$(@D) @cc_o_out@$@ -c $<
+#UNLESS(win32) $(CC) $(CFLAGS) @optimize@ $(CC_WARN) -I$(@D) @cc_o_out@$@ -c $<
.pir.pbc : # suffix rule (limited support)
$(PARROT) -o $@ $<
+# Note: Several rules in this makefile are tagged with a "SUFFIX OVERRIDE"
+# comment; this indicates that we have an explicit compilation rule for
+# that particular C file; this is done so that we override various
+# options for that file - to change optimization levels, or twiddle
+# warnings. Each of those overrides should use the most specific settings
+# possible for that file. When file-specific overrides are added during
+# Configure, the override must be allowed for in this file.
+# These will eventually be automatically generated.
+
+
###############################################################################
#
# USER TARGETS:
@@ -615,7 +620,6 @@
$(NQP_LIB_PBCS)
corevm : \
- flags_dummy \
$(GEN_PM_INCLUDES) \
PARROT_LIBS \
$(PARROT) \
@@ -805,17 +809,13 @@
installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN)
-flags_dummy :
- @echo "Compiling with:"
- @$(PERL) tools/build/cc_flags.pl ./CFLAGS echo $(CC) $(CFLAGS) -I$(@D) @cc_o_out@ xx$(O) -c xx.c
-
runtime/parrot/include/parrotlib.pbc: runtime/parrot/library/parrotlib.pir $(PARROT) $(GEN_PASM_INCLUDES)
$(PARROT) -o $@ runtime/parrot/library/parrotlib.pir
runtime/parrot/include/config.fpmc : myconfig config_lib.pasm $(MINIPARROT)
$(MINIPARROT) config_lib.pasm > $@
-$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) CFLAGS \
+$(PARROT) : src/main$(O) $(GEN_HEADERS) $(LIBPARROT) \
lib/Parrot/OpLib/core.pm src/parrot_config$(O) \
$(MINIPARROT)
$(LINK) @ld_out@$@ \
@@ -1148,7 +1148,7 @@
# hello
hello: test_prep examples/pasm/hello$(EXE)
- ./examples/pasm/hello$(EXE) "from your friendly makefile"
+ . at slash@examples at slash@pasm at slash@hello$(EXE) "from your friendly makefile"
examples/pasm/hello.pbc: examples/pasm/hello.pasm
$(PARROT) -o examples/pasm/hello.pbc examples/pasm/hello.pasm
@@ -1253,8 +1253,10 @@
include/pmc/pmc_sub.h \
include/pmc/pmc_parrotinterpreter.h
+## SUFFIX OVERRIDE - dynloaded files need cc_shared
src/extend$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
- include/pmc/pmc_sub.h $(INC_DIR)/extend_vtable.h
+ include/pmc/pmc_sub.h $(INC_DIR)/extend_vtable.h src/extend.c
+ $(CC) $(CFLAGS) @optimize::src/extend.c@ @ccwarn::src/extend.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/extend.c
src/runcore/main$(O) : \
src/runcore/main.str \
@@ -1394,10 +1396,13 @@
include/pmc/pmc_unmanagedstruct.h \
include/pmc/pmc_nci.h
+## SUFFIX OVERRIDE
src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
- $(PARROT_H_HEADERS) \
- include/pmc/pmc_unmanagedstruct.h \
- include/pmc/pmc_nci.h
+ $(PARROT_H_HEADERS) \
+ include/pmc/pmc_unmanagedstruct.h \
+ include/pmc/pmc_nci.h \
+ src/nci/extra_thunks.c
+ $(CC) $(CFLAGS) @optimize::src/nci/extra_thunks.c@ @ccwarn::src/nci/extra_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c src/nci/extra_thunks.c
src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
include/pmc/pmc_fixedintegerarray.h \
@@ -1407,7 +1412,10 @@
src/vtables$(O) : $(PARROT_H_HEADERS)
+## SUFFIX OVERRIDE
src/gc/system$(O) : $(PARROT_H_HEADERS) src/gc/gc_private.h
+ $(CC) $(CFLAGS) @optimize::src/gc/system.c@ @ccwarn::src/gc/system.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c src/gc/system.c
+
src/gc/gc_private.h : $(INC_DIR)/settings.h
src/warnings$(O) : $(PARROT_H_HEADERS)
@@ -1416,7 +1424,9 @@
src/utils$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_nci.h
+## SUFFIX OVERRIDE
src/spf_render$(O) : $(PARROT_H_HEADERS) src/spf_render.str
+ $(CC) $(CFLAGS) @optimize::src/spf_render.c@ @ccwarn::src/spf_render.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c src/spf_render.c
src/spf_vtable$(O) : $(PARROT_H_HEADERS) src/spf_vtable.str
@@ -1449,15 +1459,14 @@
src/atomic/gcc_x86$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/atomic/gcc_x86.h
-src/ops/core_ops$(O) : src/ops/core_ops.c \
- include/pmc/pmc_callcontext.h \
- include/pmc/pmc_continuation.h \
- include/pmc/pmc_parrotlibrary.h \
- src/io/io_private.h $(INC_DIR)/dynext.h $(INC_DIR)/embed.h \
- $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h
-
# core_ops depends upon config.h so that it gets updated along with
# updates to config.h's version numbers
+src/ops/core_ops$(O) : src/ops/core_ops.c \
+ include/pmc/pmc_callcontext.h \
+ include/pmc/pmc_continuation.h \
+ include/pmc/pmc_parrotlibrary.h \
+ src/io/io_private.h $(INC_DIR)/dynext.h $(INC_DIR)/embed.h \
+ $(INC_DIR)/oplib/core_ops.h $(INC_DIR)/runcore_api.h
# .h files are built along with .c
$(INC_DIR)/oplib/core_ops.h: src/ops/core_ops.c
@@ -1468,8 +1477,10 @@
include/pmc/pmc_continuation.h
$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl C --core @no_lines_flag@
+## SUFFIX OVERRIDE
src/ops/core_ops_switch$(O) : $(GENERAL_H_FILES) src/ops/core_ops_switch.c \
include/pmc/pmc_parrotlibrary.h
+ $(CC) $(CFLAGS) @optimize::src/ops/core_ops_switch.c@ @ccwarn::src/ops/core_ops_switch.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_switch.c
$(INC_DIR)/oplib/core_ops_switch.h : src/ops/core_ops_switch.c
@@ -1479,7 +1490,27 @@
lib/Parrot/OpTrans/CPrederef.pm
$(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CSwitch --core @no_lines_flag@
- at TEMP_cg_c@
+## SUFFIX OVERRIDE
+src/ops/core_ops_cg$(O): $(GENERAL_H_FILES) src/ops/core_ops_cg.c \
+ include/pmc/pmc_parrotlibrary.h
+ $(CC) $(CFLAGS) @optimize::src/ops/core_ops_cg.c@ @ccwarn::src/ops/core_ops_cg.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cg.c
+
+## SUFFIX OVERRIDE
+src/ops/core_ops_cgp$(O): $(GENERAL_H_FILES) src/ops/core_ops_cgp.c \
+ include/pmc/pmc_parrotlibrary.h
+ $(CC) $(CFLAGS) @optimize::src/ops/core_ops_cgp.c@ @ccwarn::src/ops/core_ops_cgp.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/ops/core_ops_cgp.c
+
+src/runcore/cores.c: $(INC_DIR)/oplib/core_ops_cgp.h
+
+$(INC_DIR)/oplib/core_ops_cg.h: src/ops/core_ops_cg.c
+
+src/ops/core_ops_cg.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGoto.pm lib/Parrot/OpLib/core.pm
+ $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGoto --core
+
+$(INC_DIR)/oplib/core_ops_cgp.h: src/ops/core_ops_cgp.c
+
+src/ops/core_ops_cgp.c : $(OPS_FILES) $(BUILD_TOOLS_DIR)/ops2c.pl lib/Parrot/OpsFile.pm lib/Parrot/Op.pm lib/Parrot/OpTrans/CGP.pm lib/Parrot/OpLib/core.pm lib/Parrot/OpTrans/CPrederef.pm
+ $(PERL) $(BUILD_TOOLS_DIR)/ops2c.pl CGP --core
@TEMP_gc_c@
@@ -1810,7 +1841,8 @@
ext-clean \
#UNLESS(win32): cover-clean \
editor-clean
- @TEMP_cg_r@
+ $(RM_F) $(INC_DIR)/oplib/core_ops_cg.h src/ops/core_ops_cg.c \
+ $(INC_DIR)/oplib/core_ops_cgp.h src/ops/core_ops_cgp.c
$(RM_F) chartypes "*.s" "*~"
$(RM_F) $(FLUID_FILES_1)
$(RM_F) $(FLUID_FILES_2)
@@ -2411,7 +2443,9 @@
###### OS depend targets ##########
# for use by t/pmc/nci.t
-src/nci_test$(O): $(PARROT_H_HEADERS)
+## SUFFIX OVERRIDE - dynloaded files need cc_shared
+src/nci_test$(O): $(PARROT_H_HEADERS) src/nci_test.c
+ $(CC) $(CFLAGS) @optimize::src/nci_test.c@ @ccwarn::src/nci_test.c@ @cc_shared@ -I$(@D) @cc_o_out@$@ -c src/nci_test.c
$(LIBNCI_TEST_SO): src/nci_test$(O) $(LIBPARROT)
$(LD) $(LD_LOAD_FLAGS) @ncilib_link_extra@ $(LDFLAGS) \
@@ -2438,7 +2472,9 @@
$(NCI_THUNK_GEN) --dynext --no-warn-dups \
--output=src/extra_nci_thunks.c <src/nci/extra_thunks.nci
-src/extra_nci_thunks$(O) : $(GENERAL_H_FILES)
+## SUFFIX OVERRIDE
+src/extra_nci_thunks$(O) : $(GENERAL_H_FILES) src/extra_nci_thunks.c
+ $(CC) $(CFLAGS) @optimize::src/extra_nci_thunks.c@ @ccwarn::src/extra_nci_thunks.c@ @cc_shared@ -I$(@D) @cc_o_out@ $@ -c src/extra_nci_thunks.c
$(EXTRANCITHUNKS_SO) : $(LIBPARROT) src/extra_nci_thunks$(O)
$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
Modified: trunk/config/init/hints/darwin.pm
==============================================================================
--- trunk/config/init/hints/darwin.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/init/hints/darwin.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -90,8 +90,7 @@
rpath => "-L",
libparrot_soname => "-install_name "
. $lib_dir
- . $conf->data->get('slash')
- . "libparrot"
+ . '/libparrot'
. $conf->data->get('share_ext')
);
}
Modified: trunk/config/init/hints/mswin32.pm
==============================================================================
--- trunk/config/init/hints/mswin32.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/init/hints/mswin32.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -101,7 +101,6 @@
ar_flags => '',
ar_out => '-out:',
slash => '\\',
- blib_dir => 'blib\\lib',
ccflags => $ccflags,
ccwarn => $ccwarn,
has_dynamic_linking => 1,
@@ -153,7 +152,6 @@
ar_flags => '',
ar_out => '-out:',
slash => '\\',
- blib_dir => 'blib\\lib',
ccflags => $ccflags,
ccwarn => '',
has_dynamic_linking => 1
@@ -200,7 +198,6 @@
ar_out => '',
ar_extra => '',
slash => '\\',
- blib_dir => 'blib\\lib',
make_and => "\n\t",
);
}
@@ -261,7 +258,6 @@
sym_export => '__declspec(dllexport)',
sym_import => '__declspec(dllimport)',
slash => '\\',
- blib_dir => 'blib\\lib',
);
}
}
Modified: trunk/config/init/optimize.pm
==============================================================================
--- trunk/config/init/optimize.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/init/optimize.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2005, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
=head1 NAME
@@ -21,10 +21,10 @@
sub _init {
my $self = shift;
- my %data;
- $data{description} = q{Enable optimization};
- $data{result} = q{};
- return \%data;
+ return {
+ 'description', 'Enable optimization',
+ 'result', '',
+ };
}
our $verbose;
@@ -41,41 +41,53 @@
# A plain --optimize means use perl5's $Config{optimize}. If an argument
# is given, however, use that instead.
my $optimize = $conf->options->get('optimize');
- if ( defined $optimize ) {
- $self->set_result('yes');
- # disable debug flags
- $conf->data->set( cc_debug => '' );
- $conf->data->add( ' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG" );
- if ( $optimize eq "1" ) {
-
- # use perl5's value
- # gcc 4.1 doesn't like -mcpu=xx, i.e. it's deprecated
- my $opts = $conf->data->get('optimize_provisional');
- my $gccversion = $conf->data->get( 'gccversion' );
- my $arch_opt = 'cpu';
- if ( defined $gccversion and $gccversion > 3.3 ) {
- $arch_opt = 'arch';
- }
- $opts =~ s/-mcpu=/-m$arch_opt=/;
- $conf->data->add( ' ', ccflags => $opts );
- print "opts: ", $opts, "\n" if $verbose;
-
- # record what optimization was enabled
- $conf->data->set( optimize => $opts );
- }
- else {
+ if (! defined $optimize) {
+ $self->set_result('no');
+ print "(none requested) " if $conf->options->get('verbose');
+ return 1;
+ }
- # use what was passed to --optimize on the CLI
- $conf->data->add( ' ', ccflags => $optimize );
+ $self->set_result('yes');
+ my $gccversion = $conf->data->get( 'gccversion' );
- # record what optimization was enabled
- $conf->data->set( optimize => $optimize );
+ my $options;
+ if ( $optimize eq "1" ) {
+ # start with perl5's flags ...
+ $options = $conf->data->get('optimize_provisional');
+
+ # ... but gcc 4.1 doesn't like -mcpu=xx, i.e. it's deprecated
+ if ( defined $gccversion and $gccversion > 3.3 ) {
+ $options =~ s/-mcpu=/-march=/;
}
}
else {
- $self->set_result('no');
- print "(none requested) " if $conf->options->get('verbose');
+ # use the command line verbatim
+ $options = $optimize;
+ }
+
+ # save the options, however we got them.
+ $conf->data->set( optimize => $options );
+ print "optimize options: ", $options, "\n" if $verbose;
+
+ # disable debug flags.
+ $conf->data->set( cc_debug => '' );
+ $conf->data->add( ' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG" );
+
+ # per file overrides - not every compiler can optimize every file.
+
+ # The src/ops/core_ops*.c files are challenging to optimize.
+ # gcc can usually handle it, but don't assume any other compilers can,
+ # until there is specific evidence otherwise.
+ if ( ! defined($gccversion)) {
+ $conf->data->set('optimize::src/ops/core_ops_cg.c','');
+ $conf->data->set('optimize::src/ops/core_ops_cgp.c','');
+ $conf->data->set('optimize::src/ops/core_ops_switch.c','');
+ }
+
+ # TT #405
+ if ($conf->data->get('cpuarch') eq 'amd64') {
+ $conf->data->set('optimize::src/gc/system.c','');
}
return 1;
Modified: trunk/config/inter/charset.pm
==============================================================================
--- trunk/config/inter/charset.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/inter/charset.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -75,8 +75,7 @@
}
# build list of libraries for link line in Makefile
- my $slash = $conf->data->get('slash');
- $TEMP_charset_o =~ s/^| / src${slash}string${slash}charset${slash}/g;
+ $TEMP_charset_o =~ s{^| }{ src/string/charset/}g;
$conf->data->set(
charset => $charset_list,
Modified: trunk/config/inter/encoding.pm
==============================================================================
--- trunk/config/inter/encoding.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/inter/encoding.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -75,8 +75,7 @@
}
# build list of libraries for link line in Makefile
- my $slash = $conf->data->get('slash');
- $TEMP_encoding_o =~ s/^| / src${slash}string${slash}encoding${slash}/g;
+ $TEMP_encoding_o =~ s{^| }{ src/string/encoding/}g;
$conf->data->set(
encoding => $encoding_list,
Modified: trunk/config/inter/libparrot.pm
==============================================================================
--- trunk/config/inter/libparrot.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/config/inter/libparrot.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -105,7 +105,7 @@
&& $conf->data->get('rpath') )
? $conf->data->get('rpath')
. $conf->data->get('build_dir')
- . $conf->data->get('slash')
+ . '/'
. $conf->data->get('blib_dir')
: ''
);
@@ -144,7 +144,7 @@
$conf->data->set(libparrot_linkflags =>
'-L'
. $conf->data->get('build_dir')
- . $conf->data->get('slash')
+ . '/'
. $conf->data->get('blib_dir')
. ' -lparrot'
);
Modified: trunk/lib/Parrot/Configure/Compiler.pm
==============================================================================
--- trunk/lib/Parrot/Configure/Compiler.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/lib/Parrot/Configure/Compiler.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -197,10 +197,15 @@
$conf->genfile($source, $target, %options);
-Takes the specified source file, replacing entries like C<@FOO@> with
-C<FOO>'s value from the configuration system's data, and writes the results
+Takes the specified source file, replacing entries like C<@key@> with
+C<key>'s value from the configuration system's data, and writes the results
to specified target file.
+If a C<::> is present in the C<@key@>, the replaced value will first try to
+use the full key, but if that is not present, the key up to the C<::> is used.
+For example, if C<@cc_warn::src/embed.c@> is used, and that key doesn't
+exist, the fallback key would be C<@cc_warn@>.
+
Respects the following options when manipulating files (Note: most of the
replacement syntax assumes the source text is on a single line.)
@@ -210,8 +215,8 @@
If set to a C<makefile>, C<c> or C<perl> value, C<comment_type> will be set
to corresponding value.
-Moreover, when set to a C<makefile> value, it will set C<replace_slashes> to
-enabled, and C<conditioned_lines> to enabled.
+Moreover, when set to a C<makefile> value, it will enable
+C<conditioned_lines>.
Its value will be detected automatically by target file name unless you set
it to a special value C<none>.
@@ -270,11 +275,6 @@
will be used on "win32" and if "glut" is defined, but not on "cygwin".
-B<Legacy Syntax:>
-
-The old syntax #CONDITIONED_LINE(var): and
-#INVERSE_CONDITIONED_LINE(var): is still supported, but is deprecated.
-
=item comment_type
This option takes has two possible values, C<#> or C</*>. If present and
@@ -294,12 +294,6 @@
this evaluation occurs, any substitution of @@ values is performed on the
original text.
-=item replace_slashes
-
-If set to a true value, this causes any C</>s in the file to automatically
-be replaced with an architecture appropriate slash. C</> or C<\>. This is
-a very helpful option when writing Makefiles.
-
=item expand_gmake_syntax
If set to a true value, then certain types of I<gmake> syntax will be expanded
@@ -350,7 +344,7 @@
open my $out, '>', "$target.tmp" or die "Can't open $target.tmp: $!";
if ( !exists $options{file_type}) {
- if ( $target =~ m/makefile$/i ) {
+ if ( $target =~ m/makefile$/i || $target =~ m/\.mak/) {
$options{file_type} = 'makefile';
}
elsif ($target =~ m/\.p[lm]$/i ) {
@@ -378,7 +372,6 @@
$file_types_info{$options{file_type}}{comment_type};
}
if ( $options{file_type} eq 'makefile' ) {
- $options{replace_slashes} = 1;
$options{conditioned_lines} = 1;
}
}
@@ -461,16 +454,6 @@
next LINE if $former_truth;
$line = $1;
}
- # Legacy, DEPRECATED.
- elsif (($expr,$rest)=($line =~ m/^#CONDITIONED_LINE\(([^)]+)\):(.*)/s)) {
- next LINE unless cond_eval($conf, $expr);
- $line = $rest;
- }
- elsif (($expr,$rest)=($line =~ m/^#INVERSE_CONDITIONED_LINE\(([^)]+)\):(.*)/s )) {
- next LINE if cond_eval($conf, $expr);
- $line = $rest;
- }
-
else { # reset
$former_truth = -1; # ELSE must immediately follow a conditional.
}
@@ -539,29 +522,29 @@
# interpolate @foo@ values
$line =~ s{ \@ (\w+) \@ }{
if(defined(my $val=$conf->data->get($1))) {
- #use Data::Dumper;warn Dumper("val for $1 is ",$val);
$val;
}
else {
- warn "value for '$1' in $source is undef";
+ warn "value for '\@$1\@' in $source is undef";
'';
}
}egx;
- if ( $options{replace_slashes} ) {
- if ( $line =~ m{/$} ) {
- croak "$source:$.: line ends in a slash\n";
+ # interpolate @foo::bar@ values
+ $line =~ s{ \@ (\w+) :: ([^\@]+) \@ }{
+ my $full = $1 . '::' . $2;
+ my $base = $1;
+ if(defined(my $val=$conf->data->get($full))) {
+ $val;
}
-
- $line =~ s{(/+)}{
- my $len = length $1;
- my $slash = $conf->data->get('slash');
- '/' x ($len/2) . ($len%2 ? $slash : '');
- }eg;
-
- # replace \* with \\*, so make will not eat the \
- $line =~ s{(\\\*)}{\\$1}g;
- }
+ elsif(defined($val=$conf->data->get($base))) {
+ $val;
+ }
+ else {
+ warn "value for '\@$full\@' in $source is undef, no fallback";
+ '';
+ }
+ }egx;
print $out $line;
}
Modified: trunk/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- trunk/lib/Parrot/Configure/Step/List.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/lib/Parrot/Configure/Step/List.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
# $Id$
package Parrot::Configure::Step::List;
use strict;
@@ -23,6 +23,8 @@
auto::msvc
auto::attributes
auto::warnings
+ auto::arch
+ auto::cpu
init::optimize
inter::shlibs
inter::libparrot
@@ -37,10 +39,8 @@
auto::va_ptr
auto::format
auto::isreg
- auto::arch
auto::jit
auto::frames
- auto::cpu
auto::cgoto
auto::inline
auto::gc
Modified: trunk/lib/Parrot/Docs/File.pm
==============================================================================
--- trunk/lib/Parrot/Docs/File.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/lib/Parrot/Docs/File.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -109,7 +109,6 @@
my %type_for_name = (
'Artistic' => 'Licence file',
'BUGS' => 'Project info',
- 'CFLAGS' => 'CFLAGS file',
'ChangeLog' => 'Project info',
'Changes' => 'Project info',
'CREDITS' => 'Project info',
Modified: trunk/lib/Parrot/Docs/Section/Tools.pm
==============================================================================
--- trunk/lib/Parrot/Docs/Section/Tools.pm Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/lib/Parrot/Docs/Section/Tools.pm Fri Mar 5 16:20:00 2010 (r44649)
@@ -45,7 +45,6 @@
'Configuration',
'',
$self->new_item( '', 'tools/dev/as2c.pl' ),
- $self->new_item( '', 'tools/build/cc_flags.pl' ),
$self->new_item( '', 'tools/build/vtable_h.pl' ),
$self->new_item( '', 'tools/build/vtable_extend.pl' ),
),
Modified: trunk/src/call/args.c
==============================================================================
--- trunk/src/call/args.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/call/args.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -794,7 +794,6 @@
PMC *call_object;
INTVAL *int_array;
PMC * const ctx = CURRENT_CONTEXT(interp);
- INTVAL returns_pos = 0;
INTVAL arg_index;
INTVAL arg_count;
@@ -820,7 +819,6 @@
GETATTR_FixedIntegerArray_int_array(interp, raw_sig, int_array);
for (arg_index = 0; arg_index < arg_count; arg_index++) {
- STRING * const signature = CONST_STRING(interp, "signature");
const INTVAL arg_flags = int_array[arg_index];
const INTVAL raw_index = raw_args[arg_index + 2];
@@ -881,7 +879,6 @@
ARGIN(const char *sig), va_list args)
{
ASSERT_ARGS(Parrot_pcc_build_sig_object_from_varargs)
- PMC *type_tuple = PMCNULL;
PMC *arg_flags = PMCNULL;
PMC *return_flags = PMCNULL;
PMC * const call_object = Parrot_pmc_new(interp, enum_class_CallContext);
@@ -902,7 +899,6 @@
const INTVAL type = sig[i];
if (in_return_sig) {
- STRING * const signature = CONST_STRING(interp, "signature");
/* Returns store the original passed-in pointer so they can pass
* the result back to the caller. */
switch (type) {
@@ -1587,13 +1583,11 @@
INTVAL *return_array = NULL;
INTVAL *result_array = NULL;
PMC *result_sig = NULL;
- PMC * const ctx = CURRENT_CONTEXT(interp);
PMC *named_used_list = PMCNULL;
PMC *named_return_list = PMCNULL;
INTVAL return_index = 0;
INTVAL return_subindex = 0;
INTVAL result_index = 0;
- INTVAL positional_index = 0;
INTVAL named_count = 0;
INTVAL err_check = 0;
INTVAL positional_returns = 0; /* initialized by a loop later */
@@ -2740,6 +2734,7 @@
intval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
{
ASSERT_ARGS(intval_constant_from_varargs)
+ UNUSED(index);
PARROT_ASSERT(!"Wrong call");
return 0;
}
@@ -2748,6 +2743,7 @@
numval_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
{
ASSERT_ARGS(numval_constant_from_varargs)
+ UNUSED(index);
PARROT_ASSERT(!"Wrong call");
return 0.0;
}
@@ -2757,6 +2753,7 @@
string_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
{
ASSERT_ARGS(string_constant_from_varargs)
+ UNUSED(index);
PARROT_ASSERT(!"Wrong call");
return NULL;
}
@@ -2766,6 +2763,7 @@
pmc_constant_from_varargs(PARROT_INTERP, ARGIN(void *data), INTVAL index)
{
ASSERT_ARGS(pmc_constant_from_varargs)
+ UNUSED(index);
PARROT_ASSERT(!"Wrong call");
return PMCNULL;
}
@@ -3133,7 +3131,6 @@
INTVAL int_type;
Parrot_String return_flags_name = Parrot_str_new_constant(interp, "return_flags");
- Parrot_String sig_name = Parrot_str_new_constant(interp, "signature");
full_sig = VTABLE_get_string(interp, sig_object);
/* Append ->[T] */
Modified: trunk/src/debug.c
==============================================================================
--- trunk/src/debug.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/debug.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -111,45 +111,11 @@
static void list_breakpoints(ARGIN(PDB_t *pdb))
__attribute__nonnull__(1);
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char * nextarg(ARGIN_NULLOK(const char *command));
-
static void no_such_register(PARROT_INTERP,
char register_type,
UINTVAL register_num)
__attribute__nonnull__(1);
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char * parse_int(ARGIN(const char *str), ARGOUT(int *intP))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- FUNC_MODIFIES(*intP);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char* parse_key(PARROT_INTERP,
- ARGIN(const char *str),
- ARGOUT(PMC **keyP))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*keyP);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char * parse_string(PARROT_INTERP,
- ARGIN(const char *str),
- ARGOUT(STRING **strP))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*strP);
-
-PARROT_CANNOT_RETURN_NULL
-static const char * skip_command(ARGIN(const char *str))
- __attribute__nonnull__(1);
PARROT_WARN_UNUSED_RESULT
PARROT_CANNOT_RETURN_NULL
@@ -178,22 +144,8 @@
PARROT_ASSERT_ARG(cmd))
#define ASSERT_ARGS_list_breakpoints __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(pdb))
-#define ASSERT_ARGS_nextarg __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_no_such_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_parse_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(str) \
- , PARROT_ASSERT_ARG(intP))
-#define ASSERT_ARGS_parse_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(str) \
- , PARROT_ASSERT_ARG(keyP))
-#define ASSERT_ARGS_parse_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(str) \
- , PARROT_ASSERT_ARG(strP))
-#define ASSERT_ARGS_skip_command __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(str))
#define ASSERT_ARGS_skip_whitespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(cmd))
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
@@ -750,193 +702,6 @@
/*
-=item C<static const char * nextarg(const char *command)>
-
-Returns the position just past the current argument in the PASM instruction
-C<command>. This is not the same as C<skip_command()>, which is intended for
-debugger commands. This function is used for C<eval>.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char *
-nextarg(ARGIN_NULLOK(const char *command))
-{
- ASSERT_ARGS(nextarg)
- /* as long as the character pointed to by command is not NULL,
- * and it is either alphanumeric, a comma or a closing bracket,
- * continue looking for the next argument.
- */
- if (command) {
- while (isalnum((unsigned char) *command) || *command == ',' || *command == ']')
- command++;
-
- /* eat as much space as possible */
- command = skip_whitespace(command);
- }
-
- return command;
-}
-
-/*
-
-=item C<static const char * skip_command(const char *str)>
-
-Returns the pointer past the current debugger command. (This is an
-alternative to the C<skip_command()> macro above.)
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-static const char *
-skip_command(ARGIN(const char *str))
-{
- ASSERT_ARGS(skip_command)
- /* while str is not null and it contains a command (no spaces),
- * skip the character
- */
- while (*str && !isspace((unsigned char) *str))
- str++;
-
- /* eat all space after that */
- return skip_whitespace(str);
-}
-
-/*
-
-=item C<static const char * parse_int(const char *str, int *intP)>
-
-Parse an C<int> out of a string and return a pointer to just after the C<int>.
-The output parameter C<intP> contains the parsed value.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char *
-parse_int(ARGIN(const char *str), ARGOUT(int *intP))
-{
- ASSERT_ARGS(parse_int)
- char *end;
-
- *intP = strtol(str, &end, 0);
-
- return end;
-}
-
-/*
-
-=item C<static const char * parse_string(PARROT_INTERP, const char *str, STRING
-**strP)>
-
-Parse a double-quoted string out of a C string and return a pointer to
-just after the string. The parsed string is converted to a Parrot
-C<STRING> and placed in the output parameter C<strP>.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char *
-parse_string(PARROT_INTERP, ARGIN(const char *str), ARGOUT(STRING **strP))
-{
- ASSERT_ARGS(parse_string)
- const char *string_start;
-
- /* if this is not a quoted string, there's nothing to parse */
- if (*str != '"')
- return NULL;
-
- /* skip the quote */
- str++;
-
- string_start = str;
-
- /* parse while there's no closing quote */
- while (*str && *str != '"') {
- /* skip any potentially escaped quotes */
- if (*str == '\\' && str[1])
- str += 2;
- else
- str++;
- }
-
- /* create the output STRING */
- *strP = string_make(interp, string_start, (UINTVAL)(str - string_start),
- NULL, 0);
-
- /* skip the closing quote */
- if (*str)
- str++;
-
- return str;
-}
-
-/*
-
-=item C<static const char* parse_key(PARROT_INTERP, const char *str, PMC
-**keyP)>
-
-Parse an aggregate key out of a string and return a pointer to just
-after the key. Currently only string and integer keys are allowed.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static const char*
-parse_key(PARROT_INTERP, ARGIN(const char *str), ARGOUT(PMC **keyP))
-{
- ASSERT_ARGS(parse_key)
- /* clear output parameter */
- *keyP = NULL;
-
- /* make sure it's a key */
- if (*str != '[')
- return NULL;
-
- /* Skip [ */
- str++;
-
- /* if this is a string key, create a Parrot STRING */
- if (*str == '"') {
- STRING *parrot_string;
- str = parse_string(interp, str, &parrot_string);
- *keyP = key_new_string(interp, parrot_string);
- }
- /* if this is a numeric key */
- else if (isdigit((unsigned char) *str)) {
- int value;
- str = parse_int(str, &value);
- *keyP = key_new_integer(interp, (INTVAL) value);
- }
- /* unsupported case; neither a string nor a numeric key */
- else {
- return NULL;
- }
-
- /* hm, but if this doesn't match, it's probably an error */
- /* XXX str can be NULL from parse_string() */
- if (*str != ']')
- return NULL;
-
- /* skip the closing brace on the key */
- return ++str;
-}
-
-/*
-
=item C<static void debugger_cmdline(PARROT_INTERP)>
Debugger command line.
@@ -1800,10 +1565,7 @@
/* Allocate the new break point */
newbreak = mem_gc_allocate_zeroed_typed(interp, PDB_breakpoint_t);
- if (command) {
- /*command = skip_command(command);*/
- }
- else {
+ if (! command) {
Parrot_ex_throw_from_c_args(interp, NULL, 1,
"NULL command passed to PDB_set_break");
}
@@ -3328,7 +3090,6 @@
{
ASSERT_ARGS(PDB_eval)
- PDB_t *pdb = interp->pdb;
Interp *warninterp = (interp->pdb && interp->pdb->debugger) ?
interp->pdb->debugger : interp;
TRACEDEB_MSG("PDB_eval");
Modified: trunk/src/dynpmc/rational.pmc
==============================================================================
--- trunk/src/dynpmc/rational.pmc Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/dynpmc/rational.pmc Fri Mar 5 16:20:00 2010 (r44649)
@@ -193,34 +193,6 @@
/*
-=item * static void rat_power_int(PARROT_INTERP, PMC *self, int value)
-
-Calculates the power of a Rational-PMC to an exponent value in-place.
-
-=cut
-
-*/
-static void rat_power_int(PARROT_INTERP, PMC *self, int value) {
- #ifdef PARROT_HAS_GMP
- mpz_t num, den;
-
- mpq_get_num(num, RT(self));
- mpq_get_den(den, RT(self));
-
- mpz_pow_ui(num, num, (unsigned int) value);
- mpq_set_num(RT(self), num);
- mpz_clear(num);
-
- mpz_pow_ui(den, den, (unsigned int) value);
- mpq_set_den(RT(self), den);
- mpz_clear(den);
- #else
- RAISE_EXCEPTION
- #endif
-}
-
-/*
-
=back
=cut
Modified: trunk/src/embed.c
==============================================================================
--- trunk/src/embed.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/embed.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -32,11 +32,6 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-PARROT_CANNOT_RETURN_NULL
-PARROT_OBSERVER
-static const char * op_name(PARROT_INTERP, int k)
- __attribute__nonnull__(1);
-
static void print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
@@ -53,8 +48,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(3);
-#define ASSERT_ARGS_op_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp))
#define ASSERT_ARGS_print_constant_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(output))
@@ -669,26 +662,6 @@
/*
-=item C<static const char * op_name(PARROT_INTERP, int k)>
-
-Returns the name of the opcode.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_OBSERVER
-static const char *
-op_name(PARROT_INTERP, int k)
-{
- ASSERT_ARGS(op_name)
- return interp->op_info_table[k].full_name;
-}
-
-
-/*
-
=item C<static void print_debug(PARROT_INTERP, int status, void *p)>
Prints GC info.
Modified: trunk/src/frame_builder.c
==============================================================================
--- trunk/src/frame_builder.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/frame_builder.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -39,7 +39,7 @@
*/
void
-Parrot_jit_free_buffer(PARROT_INTERP, void *ptr, void *priv)
+Parrot_jit_free_buffer(SHIM_INTERP, void *ptr, void *priv)
{
const struct jit_buffer_private_data * const jit = (struct jit_buffer_private_data*)priv;
mem_free_executable(ptr, jit->size);
@@ -312,6 +312,8 @@
int temp_calls_offset = args_offset - 16;
int total_stack_needed = -temp_calls_offset;
+ UNUSED(pmc_nci);
+
/*
* ESP
* 0-15, 16 bytes for utility calls
Modified: trunk/src/gc/mark_sweep.c
==============================================================================
--- trunk/src/gc/mark_sweep.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/gc/mark_sweep.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -41,12 +41,6 @@
FUNC_MODIFIES(*pool)
FUNC_MODIFIES(*b);
-static void free_buffer_malloc(SHIM_INTERP,
- SHIM(Fixed_Size_Pool *pool),
- ARGMOD(Buffer *b))
- __attribute__nonnull__(3)
- FUNC_MODIFIES(*b);
-
static void free_pmc_in_pool(PARROT_INTERP,
ARGIN(Memory_Pools *mem_pools),
SHIM(Fixed_Size_Pool *pool),
@@ -98,8 +92,6 @@
PARROT_ASSERT_ARG(mem_pools) \
, PARROT_ASSERT_ARG(pool) \
, PARROT_ASSERT_ARG(b))
-#define ASSERT_ARGS_free_buffer_malloc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(b))
#define ASSERT_ARGS_free_pmc_in_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(mem_pools) \
@@ -287,8 +279,6 @@
gc_object_fn_type gc_object = pool->gc_object;
UINTVAL total_used = 0;
const UINTVAL object_size = pool->object_size;
- UINTVAL i;
-
/* Run through all the PObj header pools and mark */
for (cur_arena = pool->last_Arena; cur_arena; cur_arena = cur_arena->prev) {
@@ -472,7 +462,6 @@
ARGMOD(Fixed_Size_Arena *arena))
{
ASSERT_ARGS(Parrot_add_to_free_list)
- UINTVAL i;
void *object;
const UINTVAL num_objects = pool->objects_per_alloc;
@@ -708,42 +697,6 @@
/*
-=item C<static void free_buffer_malloc(PARROT_INTERP, Fixed_Size_Pool *pool,
-Buffer *b)>
-
-Frees the given buffer, returning the storage space to the operating system
-and removing it from Parrot's memory management system. If the buffer is COW,
-The buffer is not freed if the reference count is greater then 1.
-
-=cut
-
-*/
-
-static void
-free_buffer_malloc(SHIM_INTERP, SHIM(Fixed_Size_Pool *pool),
- ARGMOD(Buffer *b))
-{
- ASSERT_ARGS(free_buffer_malloc)
- /* free allocated space at (int *)bufstart - 1, but not if it used COW or is
- * external */
- Buffer_buflen(b) = 0;
-
- if (!Buffer_bufstart(b) || PObj_is_external_or_free_TESTALL(b))
- return;
-
- if (PObj_COW_TEST(b)) {
- INTVAL * const refcount = Buffer_bufrefcountptr(b);
-
- if (--(*refcount) == 0) {
- mem_sys_free(refcount); /* the actual bufstart */
- }
- }
- else
- mem_sys_free(Buffer_bufrefcountptr(b));
-}
-
-/*
-
=item C<static void free_buffer(PARROT_INTERP, Memory_Pools *mem_pools,
Fixed_Size_Pool *pool, Buffer *b)>
@@ -1035,9 +988,8 @@
Parrot_gc_allocate_new_attributes_arena(PARROT_INTERP, ARGMOD(PMC_Attribute_Pool *pool))
{
ASSERT_ARGS(Parrot_gc_allocate_new_attributes_arena)
- PMC_Attribute_Free_List *list, *next, *first;
+ PMC_Attribute_Free_List *next;
- size_t i;
const size_t num_items = pool->objects_per_alloc;
const size_t item_size = pool->attr_size;
const size_t item_space = item_size * num_items;
Modified: trunk/src/multidispatch.c
==============================================================================
--- trunk/src/multidispatch.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/multidispatch.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -51,7 +51,6 @@
/* HEADERIZER BEGIN: static */
/* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
-static INTVAL distance_cmp(SHIM_INTERP, INTVAL a, INTVAL b);
static void mmd_add_multi_global(PARROT_INTERP,
ARGIN(STRING *sub_name),
ARGIN(PMC *sub_obj))
@@ -129,13 +128,6 @@
__attribute__nonnull__(2)
__attribute__nonnull__(3);
-static int mmd_search_local(PARROT_INTERP,
- ARGIN(STRING *name),
- ARGIN(PMC *candidates))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2)
- __attribute__nonnull__(3);
-
PARROT_WARN_UNUSED_RESULT
PARROT_CAN_RETURN_NULL
static PMC * Parrot_mmd_get_cached_multi_sig(PARROT_INTERP,
@@ -151,12 +143,6 @@
__attribute__nonnull__(3);
PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static PMC* Parrot_mmd_search_scopes(PARROT_INTERP, ARGIN(STRING *meth))
- __attribute__nonnull__(1)
- __attribute__nonnull__(2);
-
-PARROT_CANNOT_RETURN_NULL
static PMC * Parrot_mmd_sort_candidates(PARROT_INTERP,
ARGIN(PMC *arg_tuple),
ARGIN(PMC *cl))
@@ -164,7 +150,6 @@
__attribute__nonnull__(2)
__attribute__nonnull__(3);
-#define ASSERT_ARGS_distance_cmp __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_mmd_add_multi_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(sub_name) \
@@ -206,10 +191,6 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(name) \
, PARROT_ASSERT_ARG(cl))
-#define ASSERT_ARGS_mmd_search_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(name) \
- , PARROT_ASSERT_ARG(candidates))
#define ASSERT_ARGS_Parrot_mmd_get_cached_multi_sig \
__attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
@@ -218,9 +199,6 @@
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(pmc) \
, PARROT_ASSERT_ARG(cl))
-#define ASSERT_ARGS_Parrot_mmd_search_scopes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(interp) \
- , PARROT_ASSERT_ARG(meth))
#define ASSERT_ARGS_Parrot_mmd_sort_candidates __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(interp) \
, PARROT_ASSERT_ARG(arg_tuple) \
@@ -389,41 +367,6 @@
VTABLE_get_pmc(interp, invoke_sig), candidates);
}
-
-
-/*
-
-=item C<static INTVAL distance_cmp(PARROT_INTERP, INTVAL a, INTVAL b)>
-
-Compare distance values C<a> and C<b>. Return 1 if C<a> is larger, -1 if
-C<b> is.
-
-=cut
-
-*/
-
-static INTVAL
-distance_cmp(SHIM_INTERP, INTVAL a, INTVAL b)
-{
- ASSERT_ARGS(distance_cmp)
- short da = (short)(a & 0xffff);
- short db = (short)(b & 0xffff);
-
- /* sort first by distance */
- if (da > db)
- return 1;
-
- if (da < db)
- return -1;
-
- /* end then by index in candidate list */
- da = (short)(a >> 16);
- db = (short)(b >> 16);
-
- return da > db ? 1 : da < db ? -1 : 0;
-}
-
-
/*
=item C<static PMC* mmd_build_type_tuple_from_type_list(PARROT_INTERP, PMC
@@ -515,7 +458,6 @@
ASSERT_ARGS(Parrot_mmd_build_type_tuple_from_sig_obj)
PMC * const type_tuple = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
STRING *string_sig = VTABLE_get_string(interp, sig_obj);
- INTVAL tuple_size = 0;
INTVAL args_ended = 0;
INTVAL i, seen_invocant = 0;
INTVAL sig_len;
@@ -884,33 +826,6 @@
/*
-=item C<static PMC* Parrot_mmd_search_scopes(PARROT_INTERP, STRING *meth)>
-
-Search all scopes for MMD candidates matching the arguments given in
-C<arg_tuple>.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-static PMC*
-Parrot_mmd_search_scopes(PARROT_INTERP, ARGIN(STRING *meth))
-{
- ASSERT_ARGS(Parrot_mmd_search_scopes)
- PMC * const candidates = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
- const int stop = mmd_search_local(interp, meth, candidates);
-
- if (!stop)
- mmd_search_global(interp, meth, candidates);
-
- return candidates;
-}
-
-
-/*
-
=item C<static int Parrot_mmd_maybe_candidate(PARROT_INTERP, PMC *pmc, PMC *cl)>
If the candidate C<pmc> is a Sub PMC, push it on the candidate list and
@@ -956,28 +871,6 @@
/*
-=item C<static int mmd_search_local(PARROT_INTERP, STRING *name, PMC
-*candidates)>
-
-Search the current package namespace for matching candidates. Return
-TRUE if the MMD search should stop.
-
-=cut
-
-*/
-
-static int
-mmd_search_local(PARROT_INTERP, ARGIN(STRING *name), ARGIN(PMC *candidates))
-{
- ASSERT_ARGS(mmd_search_local)
- PMC * const multi_sub = Parrot_find_global_cur(interp, name);
-
- return multi_sub && Parrot_mmd_maybe_candidate(interp, multi_sub, candidates);
-}
-
-
-/*
-
=item C<static void mmd_search_by_sig_obj(PARROT_INTERP, STRING *name, PMC
*sig_obj, PMC *candidates)>
Modified: trunk/src/packfile.c
==============================================================================
--- trunk/src/packfile.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/packfile.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -2826,7 +2826,6 @@
const PackFile_Debug * const debug = (const PackFile_Debug *)self;
opcode_t i;
- size_t j;
default_dump_header(interp, self);
Modified: trunk/src/parrot_debugger.c
==============================================================================
--- trunk/src/parrot_debugger.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/parrot_debugger.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -249,7 +249,7 @@
STRING *compiler = Parrot_str_new_constant(interp, "PIR");
STRING *errstr = NULL;
const char source []= ".sub aux :main\nexit 0\n.end\n";
- PMC *code = Parrot_compile_string(interp, compiler, source, &errstr);
+ Parrot_compile_string(interp, compiler, source, &errstr);
if (!STRING_is_null(interp, errstr))
Parrot_io_eprintf(interp, "%Ss\n", errstr);
Modified: trunk/src/pbc_merge.c
==============================================================================
--- trunk/src/pbc_merge.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/pbc_merge.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -724,7 +724,6 @@
ASSERT_ARGS(pbc_merge_begin)
PackFile_ByteCode *bc;
PackFile_ConstTable *ct;
- opcode_t const_count = 0;
int i;
/* Create a new empty packfile. */
Modified: trunk/src/pmc.c
==============================================================================
--- trunk/src/pmc.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/pmc.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -252,7 +252,7 @@
ASSERT_ARGS(Parrot_pmc_reuse_noinit)
VTABLE *new_vtable;
- INTVAL has_ext, new_flags = 0;
+ INTVAL new_flags = 0;
if (pmc->vtable->base_type == new_type)
return pmc;
Modified: trunk/src/pmc/callcontext.pmc
==============================================================================
--- trunk/src/pmc/callcontext.pmc Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/pmc/callcontext.pmc Fri Mar 5 16:20:00 2010 (r44649)
@@ -49,18 +49,6 @@
#define STRINGCELL 2
#define PMCCELL 3
-#define SET_CELL_INT(c) \
- INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | INTCELL)
-
-#define SET_CELL_FLOAT(c) \
- INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | FLOATCELL)
-
-#define SET_CELL_STRING(c) \
- INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | STRINGCELL)
-
-#define SET_CELL_PMC(c) \
- INTVAL2PTR(Pcc_cell *, PTR2INTVAL(UNTAG_CELL(c)) | PMCCELL)
-
#define ALLOC_CELL(i) \
(Pcc_cell *)Parrot_gc_allocate_fixed_size_storage((i), sizeof (Pcc_cell))
@@ -1133,8 +1121,6 @@
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_INT(cell);
CELL_INT(cell) = value;
}
@@ -1148,8 +1134,6 @@
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_FLOAT(cell);
CELL_FLOAT(cell) = value;
}
@@ -1163,8 +1147,6 @@
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_STRING(cell);
CELL_STRING(cell) = value;
}
@@ -1178,8 +1160,6 @@
parrot_hash_put(INTERP, hash, (void *)key, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_PMC(cell);
CELL_PMC(cell) = value;
}
@@ -1194,8 +1174,6 @@
parrot_hash_put(INTERP, hash, k, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_INT(cell);
CELL_INT(cell) = value;
}
@@ -1210,8 +1188,6 @@
parrot_hash_put(INTERP, hash, k, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_FLOAT(cell);
CELL_FLOAT(cell) = value;
}
@@ -1226,8 +1202,6 @@
parrot_hash_put(INTERP, hash, k, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_STRING(cell);
CELL_STRING(cell) = value;
}
@@ -1242,8 +1216,6 @@
parrot_hash_put(INTERP, hash, k, (void *)cell);
NEXT_CELL(cell) = NULL;
}
- else
- SET_CELL_PMC(cell);
CELL_PMC(cell) = value;
}
Modified: trunk/src/pmc/null.pmc
==============================================================================
--- trunk/src/pmc/null.pmc Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/pmc/null.pmc Fri Mar 5 16:20:00 2010 (r44649)
@@ -41,17 +41,21 @@
*/
VTABLE void init() {
+ UNUSED(interp)
}
VTABLE void *get_pointer() {
+ UNUSED(interp)
return PMCNULL;
}
VTABLE void set_pointer(void *p) {
+ UNUSED(interp)
PMCNULL = (PMC *)p;
}
VTABLE INTVAL does(STRING *what) {
+ UNUSED(interp)
UNUSED(what)
/* XXX maybe a hack to get TGE running again */
return 0;
Modified: trunk/src/pmc/orderedhash.pmc
==============================================================================
--- trunk/src/pmc/orderedhash.pmc Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/pmc/orderedhash.pmc Fri Mar 5 16:20:00 2010 (r44649)
@@ -77,17 +77,6 @@
*/
-/* Create new stored item. FixedPMCArray of (key, value, prev, next). */
-static PMC*
-create_item(PARROT_INTERP, ARGIN(PMC *key), ARGIN(PMC *value)) {
- PMC *ret = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
- VTABLE_set_integer_native(interp, ret, ORDERED_HASH_ITEM_MAX);
-
- VTABLE_set_pmc_keyed_int(interp, ret, ORDERED_HASH_ITEM_KEY, key);
- VTABLE_set_pmc_keyed_int(interp, ret, ORDERED_HASH_ITEM_VALUE, value);
- return ret;
-}
-
/* Get list_item by index */
static PMC*
get_list_item(PARROT_INTERP, ARGIN(PMC *self), INTVAL idx) {
Modified: trunk/src/runcore/main.c
==============================================================================
--- trunk/src/runcore/main.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/runcore/main.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -585,15 +585,14 @@
const size_t n_tot = n_old + n_new;
op_func_t *ops_addr = NULL;
op_lib_t *cg_lib = init_func(interp, 1);
- op_lib_t *new_lib;
#if 0
/* related to CG and CGP ops issue below */
+ op_lib_t *new_lib;
STRING *op_variant;
-#endif
-
oplib_init_f new_init_func;
PMC *lib_variant;
+#endif
if (cg_lib->flags & OP_FUNC_IS_ALLOCATED) {
ops_addr = mem_gc_realloc_n_typed_zeroed(interp,
Modified: trunk/src/string/api.c
==============================================================================
--- trunk/src/string/api.c Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/src/string/api.c Fri Mar 5 16:20:00 2010 (r44649)
@@ -2822,9 +2822,6 @@
const CHARSET *charset;
const ENCODING *encoding = NULL;
- /* the default encoding is ascii */
- const char *enc_name = enc_char ? enc_char : "ascii";
-
/* does the encoding have a character set? */
const char *p = enc_char ? strchr(enc_char, ':') : NULL;
size_t clength = strlen(cstring);
Modified: trunk/t/configure/034-step.t
==============================================================================
--- trunk/t/configure/034-step.t Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/t/configure/034-step.t Fri Mar 5 16:20:00 2010 (r44649)
@@ -114,7 +114,7 @@
\$stderr
);
ok($rv, "genfile() returned true when warning expected" );
- like( $stderr, qr/value for 'foobar'/, "got expected warning" );
+ like( $stderr, qr/value for '\@foobar\@'/, "got expected warning" );
unlink $dummy or croak "Unable to delete file after testing";
chdir $cwd or croak "Unable to change back to starting directory";
Modified: trunk/t/steps/auto/cgoto-01.t
==============================================================================
--- trunk/t/steps/auto/cgoto-01.t Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/t/steps/auto/cgoto-01.t Fri Mar 5 16:20:00 2010 (r44649)
@@ -5,7 +5,7 @@
use strict;
use warnings;
-use Test::More tests => 45;
+use Test::More tests => 25;
use Carp;
use lib qw( lib t/configure/testlib );
use_ok('config::auto::cgoto');
@@ -37,10 +37,6 @@
my $ret = $step->runstep($conf);
ok( $ret, "runstep() returned true value" );
ok(defined($step->result()), "A result was defined");
-ok(defined($conf->data->get('TEMP_cg_h')), "An attribute has been defined");
-ok(defined($conf->data->get('TEMP_cg_c')), "An attribute has been defined");
-ok(defined($conf->data->get('TEMP_cg_o')), "An attribute has been defined");
-ok(defined($conf->data->get('TEMP_cg_r')), "An attribute has been defined");
ok(defined($conf->data->get('cg_flag')), "An attribute has been defined");
$conf->replenish($serialized);
@@ -68,18 +64,10 @@
########### _evaluate_cgoto() ###########
$step->_evaluate_cgoto($conf, 1);
-ok($conf->data->get('TEMP_cg_h'), "An attribute was set to true value");
-ok($conf->data->get('TEMP_cg_c'), "An attribute was set to true value");
-ok($conf->data->get('TEMP_cg_o'), "An attribute was set to true value");
-ok($conf->data->get('TEMP_cg_r'), "An attribute was set to true value");
ok($conf->data->get('cg_flag'), "An attribute was set to true value");
is($step->result(), q{yes}, "Expected result was set");
$step->_evaluate_cgoto($conf, 0);
-is($conf->data->get('TEMP_cg_h'), q{}, "An attribute was set to empty string");
-is($conf->data->get('TEMP_cg_c'), q{}, "An attribute was set to empty string");
-is($conf->data->get('TEMP_cg_o'), q{}, "An attribute was set to empty string");
-is($conf->data->get('TEMP_cg_r'), q{}, "An attribute was set to empty string");
is($conf->data->get('cg_flag'), q{}, "An attribute was set to empty string");
is($step->result(), q{no}, "Expected result was set");
@@ -99,10 +87,6 @@
sub { $step->_evaluate_cgoto($conf, 1) },
\$stdout
);
- ok($conf->data->get('TEMP_cg_h'), "An attribute was set to true value");
- ok($conf->data->get('TEMP_cg_c'), "An attribute was set to true value");
- ok($conf->data->get('TEMP_cg_o'), "An attribute was set to true value");
- ok($conf->data->get('TEMP_cg_r'), "An attribute was set to true value");
ok($conf->data->get('cg_flag'), "An attribute was set to true value");
is($step->result(), q{yes}, "Expected result was set");
}
@@ -113,14 +97,6 @@
sub { $step->_evaluate_cgoto($conf, 0) },
\$stdout
);
- is($conf->data->get('TEMP_cg_h'), q{},
- "An attribute was set to empty string");
- is($conf->data->get('TEMP_cg_c'), q{},
- "An attribute was set to empty string");
- is($conf->data->get('TEMP_cg_o'), q{},
- "An attribute was set to empty string");
- is($conf->data->get('TEMP_cg_r'), q{},
- "An attribute was set to empty string");
is($conf->data->get('cg_flag'), q{},
"An attribute was set to empty string");
is($step->result(), q{no}, "Expected result was set");
Modified: trunk/t/steps/auto/warnings-01.t
==============================================================================
--- trunk/t/steps/auto/warnings-01.t Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/t/steps/auto/warnings-01.t Fri Mar 5 16:20:00 2010 (r44649)
@@ -5,7 +5,7 @@
use strict;
use warnings;
-use Test::More tests => 41;
+use Test::More qw(no_plan); # tests => 26;
use Carp;
use lib qw( lib t/configure/testlib );
use_ok('config::auto::warnings');
@@ -31,111 +31,59 @@
$conf->add_steps($pkg);
my $serialized = $conf->pcfreeze();
+my $step;
-$conf->options->set( %{$args} );
SKIP: {
skip 'Tests not yet passing on Sun/Solaris',
- 39
+ 23
if $^O =~ m/sun|solaris/i;
-my $step = test_step_constructor_and_description($conf);
-
-my %potential_warnings_seen;
-$conf->options->set(cage => 1);
-$step->_add_cage_warnings($conf);
-%potential_warnings_seen = map { $_, 1 } @{ $step->{potential_warnings} };
-ok($potential_warnings_seen{'-std=c89'}, "Cage warning added");
-
-$conf->replenish($serialized);
+# Simulate the case where C compiler is not gcc.
$conf->options->set( %{$args} );
$step = test_step_constructor_and_description($conf);
-$conf->options->set(maintainer => 1);
-$step->_add_maintainer_warnings($conf);
-%potential_warnings_seen = map { $_, 1 } @{ $step->{potential_warnings} };
-ok($potential_warnings_seen{'-Wlarger-than-4096'}, "Maintainer warning added");
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my $warning = q{-Wphony_warning};
-auto::warnings::_set_warning($conf, $warning, 1, undef);
-ok(! $conf->data->get($warning),
- "Got expected setting for warning");
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
- my $warning = q{-Wphony_warning};
- my $stdout;
- capture(
- sub { auto::warnings::_set_warning($conf, $warning, 1, 1); },
- \$stdout,
- );
- ok(! $conf->data->get($warning),
- "Got expected setting for warning");
- like($stdout, qr/exit code:\s+1/, "Got expected verbose output");
-}
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-my $output = q{some string};
-my $tryflags = q{some flag};
-my $rv = auto::warnings::_set_ccflags($conf, $output, $tryflags, undef);
-is($rv, 1, "_set_ccflags() returned 1 as expected");
-is($conf->data->get("ccflags"), $tryflags, "ccflags changed as expected");
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
- my $output = q{some string};
- my $tryflags = q{some flag};
- my ($rv, $stdout);
- capture(
- sub { $rv = auto::warnings::_set_ccflags($conf, $output, $tryflags, 1); },
- \$stdout,
- );
- is($rv, 1, "_set_ccflags() returned 1 as expected");
- is($conf->data->get("ccflags"), $tryflags, "ccflags changed as expected");
- like($stdout, qr/ccflags:\s+$tryflags/, "Got expected verbose output");
-}
-
-$conf->replenish($serialized);
-
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-# Mock case where C compiler is not gcc.
$conf->data->set( gccversion => undef );
ok($step->runstep($conf), "runstep() returned true value");
is($step->result(), q{skipped}, "Got expected result");
+$step->set_result( undef );
$conf->replenish($serialized);
-$conf->options->set( %{$args} );
+# Simulate the case where C compiler is not gcc: verbose
+$conf->options->set( verbose => 1 );
$step = test_step_constructor_and_description($conf);
+$conf->data->set( gccversion => undef );
{
- my ($stdout, $rv);
- # Mock case where C compiler is not gcc.
- $conf->data->set( gccversion => undef );
- $conf->options->set( verbose => 1 );
+ my ($stdout, $stderr, $rv);
capture(
sub { $rv = $step->runstep($conf); },
\$stdout,
+ \$stderr,
);
ok($rv, "runstep() returned true value");
is($step->result(), q{skipped}, "Got expected result");
- like($stdout,
- qr/Currently we only set warnings/,
- "Got expected verbose output"
- );
+ like($stdout, qr/We do not \(yet\) probe for warnings for your compiler/s,
+ "Got expected verbose output: compiler with warnings not yet supported" );
}
+$step->set_result( undef );
+$conf->replenish($serialized);
+
+# Simulate case where --cage warnings are requested
+$conf->options->set( verbose => undef );
+$step = test_step_constructor_and_description($conf);
+$conf->data->set( gccversion => 'defined' );
+$conf->data->set( 'g++' => undef );
+$conf->options->set( cage => 1 );
+ok($step->runstep($conf), "runstep() returned true value");
+
+# This test is fragile, as it depends on the current state of --cage,
+# which changes over time, and on the compiler, which may not support
+# this option.
+like($conf->data->get( 'ccwarn' ),
+ qr/-Wunreachable-code/,
+ "'cage' warning set as expected"
+);
+
} # End SKIP block for Sun/Solaris
$conf->cc_clean();
Modified: trunk/t/steps/gen/makefiles-01.t
==============================================================================
--- trunk/t/steps/gen/makefiles-01.t Fri Mar 5 15:05:42 2010 (r44648)
+++ trunk/t/steps/gen/makefiles-01.t Fri Mar 5 16:20:00 2010 (r44649)
@@ -68,16 +68,10 @@
#["IF(value == xx)", 0], # invalid op error
#["IF(value = xx)", 0], # invalid op error
["IF(value=xx)", 0], # also invalid, no warning. checks for key value=xx
-
- # Legacy syntax true or false
- ["CONDITIONED_LINE(true)", 1],
- ["INVERSE_CONDITIONED_LINE(true)", 0],
- ["CONDITIONED_LINE(false)", 0],
- ["INVERSE_CONDITIONED_LINE(false)", 1],
);
}
-use Test::More tests => (8 + @cond_tests);
+use Test::More tests => (7 + @cond_tests);
use Carp;
use lib qw( . lib );
@@ -114,7 +108,6 @@
}
is($missing_SOURCE, 0, "No Makefile source file missing");
-ok(-f $step->{CFLAGS_source}, "CFLAGS source file located");
my $index = undef;
sub result {
Deleted: trunk/tools/build/cc_flags.pl
==============================================================================
--- trunk/tools/build/cc_flags.pl Fri Mar 5 16:20:00 2010 (r44648)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,131 +0,0 @@
-#! perl
-################################################################################
-# Copyright (C) 2001-2003, Parrot Foundation.
-# $Id$
-################################################################################
-
-=head1 NAME
-
-tools/build/cc_flags.pl - Process compiler flags
-
-=head1 SYNOPSIS
-
- % perl tools/build/cc_flags.pl transform compiler flags
-
-=head1 DESCRIPTION
-
-This script is used in a F<Makefile> to process the flags to pass to the
-compiler for each C file.
-
-See F<config/gen/makefiles/CFLAGS.in> for the transformation file format.
-
-=cut
-
-################################################################################
-
-use strict;
-use warnings;
-
-my $cflags = shift;
-
-open my $F, '<', $cflags or die "open $cflags: $!\n";
-
-my @options;
-
-while (<$F>) {
- chomp;
- s/#.*//;
- next unless /\S/;
-
- my $regex;
- if (s/^\{(.*?)\}\s*//) {
- next unless $1;
- $regex = qr/$1/;
- }
- elsif (s/^(\S+)\s*//) {
- $regex = qr/^\Q$1\E$/;
- }
- else {
- die "syntax error in $cflags: line $., $_\n";
- }
-
- for ( ; ; ) {
- if (s/^([-+])\{(.*?)\}\s*//) {
- next unless $2;
- my ( $sign, $options ) = ( $1, $2 );
- foreach my $option ( split ' ', $options ) {
- push @options, [ $regex, $sign, $option ];
- }
- }
- elsif (s{s(.)(.*?)\1(.*?)\1([imsx]*)\s*}{}) {
- my $mod = "";
- $mod = "(?$4)" if $4;
-
- push @options, [ $regex, 's', "$mod$2", $3 ];
- }
- elsif (/\S/) {
- die "syntax error in $cflags: line $., $_\n";
- }
- else {
- last;
- }
- }
-}
-
-my ($cfile) = grep /\.c$/, @ARGV;
-
-my ( $inject_point, $where );
-
-foreach (@ARGV) {
- last if $_ eq '';
- ++$where;
-}
-if ($where) {
-
- # Found a "" - remove it
- splice @ARGV, $where, 1;
- $inject_point = $where;
-}
-else {
- $inject_point = 1;
-}
-
-if ($cfile) {
- foreach my $option (@options) {
- if ( $cfile =~ $option->[0] ) {
- if ( $option->[1] eq '+' ) {
- splice @ARGV, $inject_point, 0, $option->[2];
- }
- elsif ( $option->[1] eq '-' ) {
- @ARGV = grep { $_ ne $option->[2] } @ARGV;
- }
- else {
- foreach my $arg (@ARGV) {
- $arg =~ s/$option->[2]/$option->[3]/;
- }
- }
- }
- }
-
- # Visual C++ already prints the source file name...
- if ( $ARGV[0] =~ /cl(?:\.exe)?/i ) {
-
- # ...but only the file name, so we print the path
- # to the directory first
- if ( $cfile =~ /(.*[\/\\])/ ) {
- print $1;
- }
- }
- else {
- print "$cfile\n";
- }
-}
-
-exit system(@ARGV) / 256;
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
More information about the parrot-commits
mailing list