/*
- * Project: libFIRM
- * File name: ir/opt/gvn_pre.c
- * Purpose: Global Value Numbering Partial Redundancy Elimination
- * (VanDrunen Hosking 2004)
- * Author: Michael Beck, Rubino Geiss
- * Created:
- * CVS-ID: $Id$
- * Copyright: (c) 1998-2006 Universität Karlsruhe
- * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
*/
+/**
+ * @file
+ * @brief Global Value Numbering Partial Redundancy Elimination
+ * (VanDrunen Hosking 2004)
+ * @author Michael Beck, Rubino Geiss
+ * @version $Id$
+ * @summary
+ *
+ * Currently completely broken because our sets do NOT preserve
+ * the topological sort!
+ */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
+#include "iroptimize.h"
+
#include <assert.h>
#include "irgraph_t.h"
#include "ircons.h"
#include "irgmod.h"
#include "debug.h"
-#include "gvn_pre.h"
#include "xmalloc.h"
/** The debug module handle. */
{
const value_entry *e1 = elt;
const value_entry *e2 = key;
+ (void) size;
return identities_cmp(e1->value, e2->value);
}
node might depend on that. */
copy_node_attr(node, nn);
res = node_add(env->trans_set, nn);
- if (nn != res)
+ if (nn != res) {
obstack_free(env->obst, nn);
- else
+ } else {
DB((dbg, LEVEL_2, "--> Translate %+F in <%+F,%d> into %+F\n", node, block, pos, res));
+ }
+
return res;
}
return node;
value_set_foreach(entry, idom_info->new_set) {
updated |= value_add_or_replace(curr_info->avail_out, entry->node, entry->value);
}
- if (updated)
+ if (updated) {
dump_value_set(curr_info->avail_out, "Updated [Avail_out]", block);
+ }
if (arity <= 1)
return;
/*
* Argh: Endless loops cause problems, because the
- * insert algorithm did not terminate. We get tranalated nodes that
+ * insert algorithm did not terminate. We get translated nodes that
* references the origin. These nodes are translated again and again...
*
* The current fix is to use post-dominance. This simple ignores
block_info *p;
unsigned antic_iter, insert_iter;
+ assert(!"COMPLETELY BROKEN YET, DO NOT USE");
+
/* register a debug mask */
FIRM_DBG_REGISTER(dbg, "firm.opt.gvn_pre");
firm_dbg_set_mask(dbg, SET_LEVEL_2);