diff options
Diffstat (limited to 'lang')
-rw-r--r-- | lang/sdcc/Makefile | 6 | ||||
-rw-r--r-- | lang/sdcc/files/patch-boost | 55 |
2 files changed, 55 insertions, 6 deletions
diff --git a/lang/sdcc/Makefile b/lang/sdcc/Makefile index edd839051cbd..ef051d8e5fa3 100644 --- a/lang/sdcc/Makefile +++ b/lang/sdcc/Makefile @@ -1,9 +1,4 @@ -# New ports collection makefile for: sdcc -# Date created: 3 May 2004 -# Whom: Tijl Coosemans <tijl@ulyssis.org> -# # $FreeBSD$ -# PORTNAME= sdcc PORTVERSION= 3.2.0 @@ -23,7 +18,6 @@ CONFLICTS_INSTALL= sdcc-[0-9]* GNU_CONFIGURE= yes USE_BZIP2= yes USE_GMAKE= yes -USE_GCC= 4.6+ OPTIONS_DEFINE= DEVLIB DOCS HC08 MCS51 PIC UCSIM Z80 OPTIONS_DEFAULT=${OPTIONS_DEFINE:NDOCS} diff --git a/lang/sdcc/files/patch-boost b/lang/sdcc/files/patch-boost new file mode 100644 index 000000000000..e06c27eba0ea --- /dev/null +++ b/lang/sdcc/files/patch-boost @@ -0,0 +1,55 @@ +--- src/SDCCtree_dec.hpp.orig ++++ src/SDCCtree_dec.hpp +@@ -53,6 +53,14 @@ + #include <boost/graph/copy.hpp> + #include <boost/graph/adjacency_list.hpp> + ++struct forget_properties ++{ ++ template<class T1, class T2> ++ void operator()(const T1&, const T2&) const ++ { ++ } ++}; ++ + // Thorup algorithm D. + // The use of the multimap makes the complexity of this O(|I|log|I|), which could be reduced to O(|I|). + template <class l_t> +@@ -152,7 +160,7 @@ + { + // Should we do this? Or just use G as J? The Thorup paper seems unclear, it speaks of statements that contain jumps to other statements, but does it count as a jump, when they're just subsequent? + boost::adjacency_list<boost::vecS, boost::vecS, boost::directedS> J; +- boost::copy_graph(G, J); ++ boost::copy_graph(G, J, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + for (unsigned int i = 0; i < boost::num_vertices(J) - 1; i++) + remove_edge(i, i + 1, J); + +@@ -256,7 +264,7 @@ + + // Todo: Implement a graph adaptor for boost that allows to treat directed graphs as undirected graphs. + boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> G_sym; +- boost::copy_graph(G, G_sym); ++ boost::copy_graph(G, G_sym, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + + std::vector<bool> active(boost::num_vertices(G), true); + +--- src/SDCCralloc.hpp.orig ++++ src/SDCCralloc.hpp +@@ -419,7 +419,7 @@ + for (var_t i = boost::num_vertices(con) - 1; i >= 0; i--) + { + cfg_sym_t cfg2; +- boost::copy_graph(cfg, cfg2); ++ boost::copy_graph(cfg, cfg2, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + for (int j = boost::num_vertices(cfg) - 1; j >= 0; j--) + { + if (cfg[j].alive.find(i) == cfg[j].alive.end()) +@@ -436,7 +436,7 @@ + #endif + // Non-connected CFGs shouldn't exist either. Another problem with dead code eliminarion. + cfg_sym_t cfg2; +- boost::copy_graph(cfg, cfg2); ++ boost::copy_graph(cfg, cfg2, boost::vertex_copy(forget_properties()).edge_copy(forget_properties())); + std::vector<boost::graph_traits<cfg_t>::vertices_size_type> component(num_vertices(cfg2)); + boost::connected_components(cfg2, &component[0]); + |