projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ensure that empty functions get their ret $0 by skipping iro_Start and beo_RegParams.
[libfirm]
/
ir
/
be
/
ia32
/
ia32_address_mode.c
diff --git
a/ir/be/ia32/ia32_address_mode.c
b/ir/be/ia32/ia32_address_mode.c
index
6ab862b
..
487b596
100644
(file)
--- a/
ir/be/ia32/ia32_address_mode.c
+++ b/
ir/be/ia32/ia32_address_mode.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 1995-200
7
University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-200
8
University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*
* This file is part of libFirm.
*
@@
-67,8
+67,9
@@
static int do_is_immediate(const ir_node *node, int *symconsts, int negate)
/* Consts are typically immediates */
if (!tarval_is_long(get_Const_tarval(node))) {
#ifdef DEBUG_libfirm
/* Consts are typically immediates */
if (!tarval_is_long(get_Const_tarval(node))) {
#ifdef DEBUG_libfirm
- ir_fprintf(stderr, "Optimisation warning tarval of %+F(%+F) is not "
- "a long.\n", node, current_ir_graph);
+ ir_fprintf(stderr,
+ "Optimisation warning tarval of %+F(%+F) is not a long.\n",
+ node, current_ir_graph);
#endif
return 0;
}
#endif
return 0;
}
@@
-90,7
+91,8
@@
static int do_is_immediate(const ir_node *node, int *symconsts, int negate)
return 1;
case iro_Add:
case iro_Sub:
return 1;
case iro_Add:
case iro_Sub:
- /* Add's and Sub's are typically supported as long as both operands are immediates */
+ /* Add's and Sub's are typically supported as long as both operands are
+ * immediates */
if(bitset_is_set(non_address_mode_nodes, get_irn_idx(node)))
return 0;
if(bitset_is_set(non_address_mode_nodes, get_irn_idx(node)))
return 0;
@@
-164,8
+166,7
@@
static void eat_immediate(ia32_address_t *addr, ir_node *node, int negate)
case iro_SymConst:
/* place the entity into the symconst */
if (addr->symconst_ent != NULL) {
case iro_SymConst:
/* place the entity into the symconst */
if (addr->symconst_ent != NULL) {
- panic("Internal error: more than 1 symconst in address "
- "calculation");
+ panic("Internal error: more than 1 symconst in address calculation");
}
addr->symconst_ent = get_SymConst_entity(node);
#ifndef SUPPORT_NEGATIVE_SYMCONSTS
}
addr->symconst_ent = get_SymConst_entity(node);
#ifndef SUPPORT_NEGATIVE_SYMCONSTS
@@
-259,8
+260,7
@@
static int eat_shl(ia32_address_t *addr, ir_node *node)
if(val < 0 || val > 3)
return 0;
if(val == 0) {
if(val < 0 || val > 3)
return 0;
if(val == 0) {
- ir_fprintf(stderr, "Optimisation warning: unoptimized Shl(,0) "
- "found\n");
+ ir_fprintf(stderr, "Optimisation warning: unoptimized Shl(,0) found\n");
}
shifted_val = get_Shl_left(node);
}
shifted_val = get_Shl_left(node);
@@
-418,6
+418,11
@@
void ia32_mark_non_am(ir_node *node)
bitset_set(non_address_mode_nodes, get_irn_idx(node));
}
bitset_set(non_address_mode_nodes, get_irn_idx(node));
}
+int ia32_is_non_address_mode_node(ir_node *node)
+{
+ return bitset_is_set(non_address_mode_nodes, get_irn_idx(node));
+}
+
static int value_last_used_here(ir_node *here, ir_node *value)
{
ir_node *block = get_nodes_block(here);
static int value_last_used_here(ir_node *here, ir_node *value)
{
ir_node *block = get_nodes_block(here);
@@
-441,7
+446,7
@@
static int value_last_used_here(ir_node *here, ir_node *value)
/**
* Walker: mark those nodes that cannot be part of an address mode because
/**
* Walker: mark those nodes that cannot be part of an address mode because
- * the
re value must be access through an
register
+ * the
ir value must be accessed through a
register
*/
static void mark_non_address_nodes(ir_node *node, void *env)
{
*/
static void mark_non_address_nodes(ir_node *node, void *env)
{