summaryrefslogtreecommitdiffhomepage
path: root/ir/be/beinfo.c
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2011-03-03 13:12:42 +0100
committerMatthias Braun <matze@braunis.de>2011-03-04 14:17:13 +0100
commit52abe23f2fa0d4bd16ec0f2d707f99b201dc9fc2 (patch)
tree6c1b35515e4d93016b5624ae09fd7e59b47dd8f8 /ir/be/beinfo.c
parent2fafc006101c3845f9fbec5783e44267355549c1 (diff)
remove to_appear_in_schedule function, use flags instead
Diffstat (limited to 'ir/be/beinfo.c')
-rw-r--r--ir/be/beinfo.c30
1 files changed, 24 insertions, 6 deletions
diff --git a/ir/be/beinfo.c b/ir/be/beinfo.c
index 4bde9e8..4ae071e 100644
--- a/ir/be/beinfo.c
+++ b/ir/be/beinfo.c
@@ -35,12 +35,13 @@
#include "irdump_t.h"
#include "error.h"
-static copy_attr_func old_phi_copy_attr;
+static copy_attr_func old_phi_copy_attr;
void be_info_new_node(ir_node *node)
{
struct obstack *obst;
backend_info_t *info;
+ unsigned opcode;
/* Projs need no be info, their tuple holds all information */
if (is_Proj(node))
@@ -56,11 +57,28 @@ void be_info_new_node(ir_node *node)
a bad decision back then), which have no register constraints.
Set some none_requirements here.
*/
- if (get_irn_mode(node) != mode_T
- && get_irn_opcode(node) <= iro_Last) {
- info->out_infos = NEW_ARR_D(reg_out_info_t, obst, 1);
- memset(info->out_infos, 0, 1 * sizeof(info->out_infos[0]));
- info->out_infos[0].req = arch_no_register_req;
+ opcode = get_irn_opcode(node);
+ if (opcode <= iro_Last) {
+ ir_mode *mode = get_irn_mode(node);
+ if (mode != mode_T) {
+ info->out_infos = NEW_ARR_D(reg_out_info_t, obst, 1);
+ memset(info->out_infos, 0, 1 * sizeof(info->out_infos[0]));
+ info->out_infos[0].req = arch_no_register_req;
+ }
+
+ switch (opcode) {
+ case iro_Anchor:
+ case iro_Bad:
+ case iro_Block:
+ case iro_Dummy:
+ case iro_End:
+ case iro_NoMem:
+ case iro_Pin:
+ case iro_Sync:
+ case iro_Unknown:
+ info->flags |= arch_irn_flags_not_scheduled;
+ break;
+ }
}
}