summaryrefslogtreecommitdiffhomepage
path: root/ir/be/beflags.h
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2007-09-12 19:05:47 +0200
committerMatthias Braun <matze@braunis.de>2007-09-12 19:05:47 +0200
commit897c780100ab59a7968eef621f2fa47bd711b089 (patch)
tree7df736c2c7c02b84b568a099c04016c4e1855c60 /ir/be/beflags.h
parent19f8863321d6ebd596cb32c8135e25ba50313727 (diff)
flags fixup phase
[r15763]
Diffstat (limited to 'ir/be/beflags.h')
-rw-r--r--ir/be/beflags.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/ir/be/beflags.h b/ir/be/beflags.h
new file mode 100644
index 0000000..2a8bb6f
--- /dev/null
+++ b/ir/be/beflags.h
@@ -0,0 +1,42 @@
+/*
+ * 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 modifies schedule so flags dependencies are respected.
+ * @author Matthias Braun, Christoph Mallon
+ * @version $Id: besched.h 14693 2007-06-21 15:35:49Z beck $
+ */
+#ifndef FIRM_BE_BEFLAGS_H
+#define FIRM_BE_BEFLAGS_H
+
+#include "bearch.h"
+#include "beirg.h"
+
+typedef ir_node * (*func_rematerialize) (ir_node *node, ir_node *after);
+
+/**
+ * Walks the schedule and ensures that flags aren't destroyed between producer
+ * and consumer of flags. It does so by moving down/rematerialising of the
+ * nodes. This does not work across blocks.
+ */
+void be_sched_fix_flags(be_irg_t *birg, const arch_register_class_t *flag_cls,
+ func_rematerialize remat_func);
+
+#endif