/*
- * Copyright (C) 1995-2008 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.
+ * Copyright (C) 2012 University of Karlsruhe.
*/
/**
#include "beabihelper.h"
#include "bearch.h"
+#include "beirg.h"
#include "benode.h"
#include "besched.h"
#include "ircons.h"
int n_res = 1; /* TODO */
unsigned pop = 0; /* TODO */
size_t i;
- ir_node *ret;
assert(ARR_LEN(env->epilog.value_map) == n_return_in);
- ret = be_new_Return(dbgi, get_irn_irg(block), block, n_res, pop,
- n_return_in, in);
+ ir_node *const ret = be_new_Return(dbgi, block, n_res, pop, n_return_in, in);
for (i = 0; i < n_return_in; ++i) {
const reg_flag_t *regflag = &env->epilog.regs[i];
const arch_register_t *reg = regflag->reg;
*/
static bool has_real_user(const ir_node *node)
{
- const ir_edge_t *edge;
foreach_out_edge(node, edge) {
ir_node *user = get_edge_src_irn(edge);
if (!is_End(user) && !is_Anchor(user))
void be_add_missing_keeps_node(ir_node *node)
{
- int n_outs, i;
- unsigned *found_projs;
- const ir_edge_t *edge;
- ir_mode *mode = get_irn_mode(node);
- ir_node *last_keep;
- ir_node **existing_projs;
+ int n_outs, i;
+ ir_mode *mode = get_irn_mode(node);
+ ir_node *last_keep;
if (mode != mode_T) {
if (!has_real_user(node)) {
if (n_outs <= 0)
return;
- rbitset_alloca(found_projs, n_outs);
- existing_projs = ALLOCANZ(ir_node*, n_outs);
+ unsigned *const found_projs = rbitset_alloca(n_outs);
+ ir_node **const existing_projs = ALLOCANZ(ir_node*, n_outs);
foreach_out_edge(node, edge) {
ir_node *succ = get_edge_src_irn(edge);
ir_mode *mode = get_irn_mode(succ);
}
}
- if (mem != initial_mem) {
- edges_reroute(initial_mem, mem);
- set_Store_mem(first_store, initial_mem);
- }
+ if (mem != initial_mem)
+ edges_reroute_except(initial_mem, mem, first_store);
}
void be_add_parameter_entity_stores(ir_graph *irg)