+int ia32_is_non_address_mode_node(ir_node const *node)
+{
+ return bitset_is_set(non_address_mode_nodes, get_irn_idx(node));
+}
+
+/**
+ * Check if a given value is last used (i.e. die after) the block of some
+ * other node.
+ */
+static int value_last_used_here(be_lv_t *lv, ir_node *here, ir_node *value)
+{
+ ir_node *block = get_nodes_block(here);
+
+ /* If the value is live end it is for sure it does not die here */
+ if (be_is_live_end(lv, block, value)) return 0;
+
+ /* if multiple nodes in this block use the value, then we cannot decide
+ * whether the value will die here (because there is no schedule yet).
+ * Assume it does not die in this case. */
+ foreach_out_edge(value, edge) {
+ ir_node *user = get_edge_src_irn(edge);
+ if (user != here && get_nodes_block(user) == block) {
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static bool simple_is_immediate(const ir_node *node)
+{
+ int symconsts = 0;
+ return do_is_immediate(node, &symconsts, false);
+}
+