[phc-internals] [phc commit] r1490 - in trunk: . plugins/tests
test/framework
codesite-noreply at google.com
codesite-noreply at google.com
Thu Jul 31 17:16:10 IST 2008
Author: paul.biggar
Date: Thu Jul 31 09:15:29 2008
New Revision: 1490
Added:
trunk/plugins/tests/inconsistent_st_attr.cpp
- copied, changed from r1487, /trunk/plugins/tests/lost_attributes.cpp
Removed:
trunk/plugins/tests/lost_attributes.cpp
Modified:
trunk/Makefile.am
trunk/Makefile.in
trunk/test/framework/driver.php
Log:
Remove the lost attributes plugin, as its not really useful. Replace it
with a more useful check - that every instance of the same variable in
the MIR has the same value in the phc.codegen.st_entry_not_required
attribute. When they don't it manifests in unusual bugs, principally
that variables are sometimes NULL when they shouldnt be. This shows
quite a lot of bugs in Prune_symbol_table.
Modified: trunk/Makefile.am
==============================================================================
--- trunk/Makefile.am (original)
+++ trunk/Makefile.am Thu Jul 31 09:15:29 2008
@@ -343,9 +343,9 @@
plugins_tests_linear_la_SOURCES = plugins/tests/linear.cpp plugins/tests/Collect_all_pointers.h
plugins_tests_linear_la_LDFLAGS = ${PLUGIN_LDFLAGS}
-nobase_pkglib_LTLIBRARIES += plugins/tests/lost_attributes.la
-plugins_tests_lost_attributes_la_SOURCES = plugins/tests/lost_attributes.cpp
-plugins_tests_lost_attributes_la_LDFLAGS = ${PLUGIN_LDFLAGS}
+nobase_pkglib_LTLIBRARIES += plugins/tests/inconsistent_st_attr.la
+plugins_tests_inconsistent_st_attr_la_SOURCES = plugins/tests/inconsistent_st_attr.cpp
+plugins_tests_inconsistent_st_attr_la_LDFLAGS = ${PLUGIN_LDFLAGS}
nobase_pkglib_LTLIBRARIES += plugins/tests/strip_includes.la
plugins_tests_strip_includes_la_SOURCES = plugins/tests/strip_includes.cpp
Modified: trunk/Makefile.in
==============================================================================
--- trunk/Makefile.in (original)
+++ trunk/Makefile.in Thu Jul 31 09:15:29 2008
@@ -129,6 +129,16 @@
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
$(AM_CXXFLAGS) $(CXXFLAGS) $(plugins_tests_cloning_la_LDFLAGS) \
$(LDFLAGS) -o $@
+plugins_tests_inconsistent_st_attr_la_LIBADD =
+am_plugins_tests_inconsistent_st_attr_la_OBJECTS = \
+ inconsistent_st_attr.lo
+plugins_tests_inconsistent_st_attr_la_OBJECTS = \
+ $(am_plugins_tests_inconsistent_st_attr_la_OBJECTS)
+plugins_tests_inconsistent_st_attr_la_LINK = $(LIBTOOL) --tag=CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) \
+ $(plugins_tests_inconsistent_st_attr_la_LDFLAGS) $(LDFLAGS) -o \
+ $@
plugins_tests_line_numbers_la_LIBADD =
am_plugins_tests_line_numbers_la_OBJECTS = line_numbers.lo
plugins_tests_line_numbers_la_OBJECTS = \
@@ -145,14 +155,6 @@
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(plugins_tests_linear_la_LDFLAGS) $(LDFLAGS) -o \
$@
-plugins_tests_lost_attributes_la_LIBADD =
-am_plugins_tests_lost_attributes_la_OBJECTS = lost_attributes.lo
-plugins_tests_lost_attributes_la_OBJECTS = \
- $(am_plugins_tests_lost_attributes_la_OBJECTS)
-plugins_tests_lost_attributes_la_LINK = $(LIBTOOL) --tag=CXX \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
- $(AM_CXXFLAGS) $(CXXFLAGS) \
- $(plugins_tests_lost_attributes_la_LDFLAGS) $(LDFLAGS) -o $@
plugins_tests_pre_vs_post_count_la_LIBADD =
am_plugins_tests_pre_vs_post_count_la_OBJECTS = pre_vs_post_count.lo
plugins_tests_pre_vs_post_count_la_OBJECTS = \
@@ -334,9 +336,9 @@
SOURCES = $(libphc_la_SOURCES) \
$(plugins_tests_canonical_unparser_la_SOURCES) \
$(plugins_tests_cloning_la_SOURCES) \
+ $(plugins_tests_inconsistent_st_attr_la_SOURCES) \
$(plugins_tests_line_numbers_la_SOURCES) \
$(plugins_tests_linear_la_SOURCES) \
- $(plugins_tests_lost_attributes_la_SOURCES) \
$(plugins_tests_pre_vs_post_count_la_SOURCES) \
$(plugins_tests_source_vs_semantic_values_la_SOURCES) \
$(plugins_tests_strip_includes_la_SOURCES) \
@@ -358,9 +360,9 @@
DIST_SOURCES = $(libphc_la_SOURCES) \
$(plugins_tests_canonical_unparser_la_SOURCES) \
$(plugins_tests_cloning_la_SOURCES) \
+ $(plugins_tests_inconsistent_st_attr_la_SOURCES) \
$(plugins_tests_line_numbers_la_SOURCES) \
$(plugins_tests_linear_la_SOURCES) \
- $(plugins_tests_lost_attributes_la_SOURCES) \
$(plugins_tests_pre_vs_post_count_la_SOURCES) \
$(plugins_tests_source_vs_semantic_values_la_SOURCES) \
$(plugins_tests_strip_includes_la_SOURCES) \
@@ -857,7 +859,7 @@
nobase_pkglib_LTLIBRARIES = plugins/tests/canonical_unparser.la \
plugins/tests/cloning.la plugins/tests/linear.la \
- plugins/tests/lost_attributes.la \
+ plugins/tests/inconsistent_st_attr.la \
plugins/tests/strip_includes.la plugins/tests/line_numbers.la \
plugins/tests/pre_vs_post_count.la \
plugins/tests/source_vs_semantic_values.la \
@@ -878,8 +880,8 @@
plugins_tests_cloning_la_LDFLAGS = ${PLUGIN_LDFLAGS}
plugins_tests_linear_la_SOURCES = plugins/tests/linear.cpp plugins/tests/Collect_all_pointers.h
plugins_tests_linear_la_LDFLAGS = ${PLUGIN_LDFLAGS}
-plugins_tests_lost_attributes_la_SOURCES = plugins/tests/lost_attributes.cpp
-plugins_tests_lost_attributes_la_LDFLAGS = ${PLUGIN_LDFLAGS}
+plugins_tests_inconsistent_st_attr_la_SOURCES = plugins/tests/inconsistent_st_attr.cpp
+plugins_tests_inconsistent_st_attr_la_LDFLAGS = ${PLUGIN_LDFLAGS}
plugins_tests_strip_includes_la_SOURCES = plugins/tests/strip_includes.cpp
plugins_tests_strip_includes_la_LDFLAGS = ${PLUGIN_LDFLAGS}
plugins_tests_line_numbers_la_SOURCES = plugins/tests/line_numbers.cpp
@@ -1055,12 +1057,12 @@
$(plugins_tests_canonical_unparser_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_canonical_unparser_la_OBJECTS)
$(plugins_tests_canonical_unparser_la_LIBADD) $(LIBS)
plugins/tests/cloning.la: $(plugins_tests_cloning_la_OBJECTS)
$(plugins_tests_cloning_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
$(plugins_tests_cloning_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_cloning_la_OBJECTS) $(plugins_tests_cloning_la_LIBADD) $(LIBS)
+plugins/tests/inconsistent_st_attr.la:
$(plugins_tests_inconsistent_st_attr_la_OBJECTS)
$(plugins_tests_inconsistent_st_attr_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
+ $(plugins_tests_inconsistent_st_attr_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_inconsistent_st_attr_la_OBJECTS)
$(plugins_tests_inconsistent_st_attr_la_LIBADD) $(LIBS)
plugins/tests/line_numbers.la:
$(plugins_tests_line_numbers_la_OBJECTS)
$(plugins_tests_line_numbers_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
$(plugins_tests_line_numbers_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_line_numbers_la_OBJECTS)
$(plugins_tests_line_numbers_la_LIBADD) $(LIBS)
plugins/tests/linear.la: $(plugins_tests_linear_la_OBJECTS)
$(plugins_tests_linear_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
$(plugins_tests_linear_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_linear_la_OBJECTS) $(plugins_tests_linear_la_LIBADD) $(LIBS)
-plugins/tests/lost_attributes.la:
$(plugins_tests_lost_attributes_la_OBJECTS)
$(plugins_tests_lost_attributes_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
- $(plugins_tests_lost_attributes_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_lost_attributes_la_OBJECTS)
$(plugins_tests_lost_attributes_la_LIBADD) $(LIBS)
plugins/tests/pre_vs_post_count.la:
$(plugins_tests_pre_vs_post_count_la_OBJECTS)
$(plugins_tests_pre_vs_post_count_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
$(plugins_tests_pre_vs_post_count_la_LINK) -rpath $(pkglibdir)
$(plugins_tests_pre_vs_post_count_la_OBJECTS)
$(plugins_tests_pre_vs_post_count_la_LIBADD) $(LIBS)
plugins/tests/source_vs_semantic_values.la:
$(plugins_tests_source_vs_semantic_values_la_OBJECTS)
$(plugins_tests_source_vs_semantic_values_la_DEPENDENCIES) plugins/tests/$(am__dirstamp)
@@ -1266,10 +1268,10 @@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getopt.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getopt1.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/helloworld.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/inconsistent_st_attr.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lex.yy.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/line_numbers.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/linear.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/lost_attributes.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/parse.Plo at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/phc.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/php_parser.tab.Plo at am__quote@
@@ -1876,6 +1878,13 @@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o
cloning.lo `test -f 'plugins/tests/cloning.cpp' || echo '$(srcdir)/'`plugins/tests/cloning.cpp
+inconsistent_st_attr.lo: plugins/tests/inconsistent_st_attr.cpp
+ at am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT
inconsistent_st_attr.lo -MD -MP -MF $(DEPDIR)/inconsistent_st_attr.Tpo
-c -o inconsistent_st_attr.lo `test
-f 'plugins/tests/inconsistent_st_attr.cpp' || echo '$(srcdir)/'`plugins/tests/inconsistent_st_attr.cpp
+ at am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/inconsistent_st_attr.Tpo $(DEPDIR)/inconsistent_st_attr.Plo
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@
source='plugins/tests/inconsistent_st_attr.cpp'
object='inconsistent_st_attr.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o
inconsistent_st_attr.lo `test
-f 'plugins/tests/inconsistent_st_attr.cpp' || echo '$(srcdir)/'`plugins/tests/inconsistent_st_attr.cpp
+
line_numbers.lo: plugins/tests/line_numbers.cpp
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT
line_numbers.lo -MD -MP -MF $(DEPDIR)/line_numbers.Tpo -c -o
line_numbers.lo `test -f 'plugins/tests/line_numbers.cpp' || echo '$(srcdir)/'`plugins/tests/line_numbers.cpp
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/line_numbers.Tpo $(DEPDIR)/line_numbers.Plo
@@ -1889,13 +1898,6 @@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='plugins/tests/linear.cpp'
object='linear.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o
linear.lo `test -f 'plugins/tests/linear.cpp' || echo '$(srcdir)/'`plugins/tests/linear.cpp
-
-lost_attributes.lo: plugins/tests/lost_attributes.cpp
- at am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT
lost_attributes.lo -MD -MP -MF $(DEPDIR)/lost_attributes.Tpo -c -o
lost_attributes.lo `test -f 'plugins/tests/lost_attributes.cpp' || echo '$(srcdir)/'`plugins/tests/lost_attributes.cpp
- at am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/lost_attributes.Tpo $(DEPDIR)/lost_attributes.Plo
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@
source='plugins/tests/lost_attributes.cpp' object='lost_attributes.lo'
libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE)
$(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o
lost_attributes.lo `test -f 'plugins/tests/lost_attributes.cpp' || echo '$(srcdir)/'`plugins/tests/lost_attributes.cpp
pre_vs_post_count.lo: plugins/tests/pre_vs_post_count.cpp
@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS)
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES)
$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT
pre_vs_post_count.lo -MD -MP -MF $(DEPDIR)/pre_vs_post_count.Tpo -c -o
pre_vs_post_count.lo `test -f 'plugins/tests/pre_vs_post_count.cpp' || echo '$(srcdir)/'`plugins/tests/pre_vs_post_count.cpp
Copied: trunk/plugins/tests/inconsistent_st_attr.cpp (from r1487, /trunk/plugins/tests/lost_attributes.cpp)
==============================================================================
--- /trunk/plugins/tests/lost_attributes.cpp (original)
+++ trunk/plugins/tests/inconsistent_st_attr.cpp Thu Jul 31 09:15:29 2008
@@ -2,67 +2,71 @@
* phc -- the open source PHP compiler
* See doc/license/README.license for licensing information
*
- * Test whether we create nodes without attributes.
+ * Check that each variable is consistenly either in the symbol table,
or not.
*/
#include "process_ir/General.h"
#include "pass_manager/Plugin_pass.h"
-#include "AST_visitor.h"
-#include "HIR_visitor.h"
#include "MIR_visitor.h"
-template <class Node, class Visitor>
-class Lost_attributes : public Visitor
+using namespace MIR;
+
+bool success = true;
+
+class Inconstent_st_attr : public Visitor
{
private:
- bool init;
+ map<string, bool> var_map;
+ bool check; // only check with methods
+
public:
- Lost_attributes (bool init = false) : init (init) { }
+ Inconstent_st_attr () : check(false) {}
- void pre_node (Node* in)
+ // Only check within methods
+ void children_method (Method* in)
{
- if (init)
- {
- in->attrs->set_true ("phc.lost_attributes.test");
- }
- else if (!in->attrs->is_true ("phc.lost_attributes.test"))
- {
- debug (in);
- xadebug (in);
- cout << "Failure" << endl;
- exit (-1);
- }
+ var_map.clear (); // This is per-method only
+ check = true;
+ visit_statement_list (in->statements);
+ check = false;
}
-};
-extern "C" void run_ast (AST::PHP_script* in, Pass_manager*, String* option)
-{
- static bool first = true;
- if (first)
+ void pre_variable_name (VARIABLE_NAME* in)
{
- in->visit (new Lost_attributes<AST::Node, AST::Visitor> (true));
- first = false;
- }
- in->visit (new Lost_attributes<AST::Node, AST::Visitor>);
-}
+ if (!check)
+ return;
-extern "C" void run_hir (HIR::PHP_script* in, Pass_manager*, String* option)
-{
- in->visit (new Lost_attributes<HIR::Node, HIR::Visitor>);
-}
+ if (var_map.find(*in->value) != var_map.end()) // already exists
+ {
+ if (var_map[*in->value] != in->attrs->is_true ("phc.codegen.st_entry_not_required"))
+ {
+ success = false;
+ cout << "Failure" << endl;
+
+ cdebug << "Variable: ";
+ debug (in);
+ cdebug << " expected " << var_map[*in->value] << " st entry, but
got " << in->attrs->is_true ("phc.codegen.st_entry_not_required") << endl;
+ xadebug (in);
+ }
+ }
+ else
+ var_map [*in->value] = in->attrs->is_true ("phc.codegen.st_entry_not_required");
+ }
+};
extern "C" void run_mir (MIR::PHP_script* in, Pass_manager*, String* option)
{
- in->visit (new Lost_attributes<MIR::Node, MIR::Visitor>);
+ in->visit (new Inconstent_st_attr);
}
extern "C" void load (Pass_manager* pm, Plugin_pass* pass)
{
- pm->add_after_each_pass (pass);
+ pm->add_after_each_mir_pass (pass);
}
extern "C" void unload ()
{
- printf("Success\n");
+ if (success)
+ cout << "Success" << endl;
}
Modified: trunk/test/framework/driver.php
==============================================================================
--- trunk/test/framework/driver.php (original)
+++ trunk/test/framework/driver.php Thu Jul 31 09:15:29 2008
@@ -88,7 +88,7 @@
require_once ("compile_optimized.php");
require_once ("refcounts.php");
require_once ("demi_eval.php");
-$tests[] = new PluginTest ("lost_attributes");
+$tests[] = new PluginTest ("inconsistent_st_attr");
$tests[] = new PluginTest ("linear");
$tests[] = new PluginTest ("cloning");
$tests[] = new PluginTest ("pre_vs_post_count");
More information about the phc-internals
mailing list