-#if 0
-static void peephole_store_incsp(ir_node *store)
-{
- dbg_info *dbgi;
- ir_node *node;
- ir_node *block;
- ir_node *noreg;
- ir_node *mem;
- ir_node *push;
- ir_node *val;
- ir_node *base;
- ir_node *index;
- ir_node *am_base = get_irn_n(store, n_ia32_Store_base);
- if (!be_is_IncSP(am_base)
- || get_nodes_block(am_base) != get_nodes_block(store))
- return;
- mem = get_irn_n(store, n_ia32_Store_mem);
- if (!is_ia32_NoReg_GP(get_irn_n(store, n_ia32_Store_index))
- || !is_NoMem(mem))
- return;
-
- int incsp_offset = be_get_IncSP_offset(am_base);
- if (incsp_offset <= 0)
- return;
-
- /* we have to be at offset 0 */
- int my_offset = get_ia32_am_offs_int(store);
- if (my_offset != 0) {
- /* TODO here: find out wether there is a store with offset 0 before
- * us and wether we can move it down to our place */
- return;
- }
- ir_mode *ls_mode = get_ia32_ls_mode(store);
- int my_store_size = get_mode_size_bytes(ls_mode);
-
- if (my_offset + my_store_size > incsp_offset)
- return;
-
- /* correctness checking:
- - noone else must write to that stackslot
- (because after translation incsp won't allocate it anymore)
- */
- sched_foreach_reverse_from(store, node) {
- int i, arity;
-
- if (node == am_base)
- break;
-
- /* make sure noone else can use the space on the stack */
- arity = get_irn_arity(node);
- for (i = 0; i < arity; ++i) {
- ir_node *pred = get_irn_n(node, i);
- if (pred != am_base)
- continue;
-
- if (i == n_ia32_base &&
- (get_ia32_op_type(node) == ia32_AddrModeS
- || get_ia32_op_type(node) == ia32_AddrModeD)) {
- int node_offset = get_ia32_am_offs_int(node);
- ir_mode *node_ls_mode = get_ia32_ls_mode(node);
- int node_size = get_mode_size_bytes(node_ls_mode);
- /* overlapping with our position? abort */
- if (node_offset < my_offset + my_store_size
- && node_offset + node_size >= my_offset)
- return;
- /* otherwise it's fine */
- continue;
- }
-
- /* strange use of esp: abort */
- return;
- }
- }
-
- /* all ok, change to push */
- dbgi = get_irn_dbg_info(store);
- block = get_nodes_block(store);
- noreg = ia32_new_NoReg_gp(cg);
- val = get_irn_n(store, n_ia32_Store_val);
-
- push = new_bd_ia32_Push(dbgi, block, noreg, noreg, mem,
-
- create_push(dbgi, current_ir_graph, block, am_base, store);
-}
-#endif
-