projects
/
cparser
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
315d496
)
only get mode if needed
author
Matthias Braun
<matze@braunis.de>
Tue, 4 Dec 2007 13:55:24 +0000
(13:55 +0000)
committer
Matthias Braun
<matze@braunis.de>
Tue, 4 Dec 2007 13:55:24 +0000
(13:55 +0000)
[r18595]
ast2firm.c
patch
|
blob
|
history
diff --git
a/ast2firm.c
b/ast2firm.c
index
e081b1d
..
d6198f7
100644
(file)
--- a/
ast2firm.c
+++ b/
ast2firm.c
@@
-1084,7
+1084,6
@@
static ir_node *unary_expression_to_firm(const unary_expression_t *expression)
{
dbg_info *dbgi = get_dbg_info(&expression->expression.source_position);
type_t *type = skip_typeref(expression->expression.datatype);
{
dbg_info *dbgi = get_dbg_info(&expression->expression.source_position);
type_t *type = skip_typeref(expression->expression.datatype);
- ir_mode *mode = get_ir_mode(type);
if(expression->expression.type == EXPR_UNARY_TAKE_ADDRESS)
return expression_to_addr(expression->value);
if(expression->expression.type == EXPR_UNARY_TAKE_ADDRESS)
return expression_to_addr(expression->value);
@@
-1093,13
+1092,18
@@
static ir_node *unary_expression_to_firm(const unary_expression_t *expression)
ir_node *value_node = expression_to_firm(value);
switch(expression->expression.type) {
ir_node *value_node = expression_to_firm(value);
switch(expression->expression.type) {
- case EXPR_UNARY_NEGATE:
+ case EXPR_UNARY_NEGATE: {
+ ir_mode *mode = get_ir_mode(type);
return new_d_Minus(dbgi, value_node, mode);
return new_d_Minus(dbgi, value_node, mode);
+ }
case EXPR_UNARY_PLUS:
return value_node;
case EXPR_UNARY_PLUS:
return value_node;
- case EXPR_UNARY_BITWISE_NEGATE:
+ case EXPR_UNARY_BITWISE_NEGATE: {
+ ir_mode *mode = get_ir_mode(type);
return new_d_Not(dbgi, value_node, mode);
return new_d_Not(dbgi, value_node, mode);
+ }
case EXPR_UNARY_NOT: {
case EXPR_UNARY_NOT: {
+ ir_mode *mode = get_ir_mode(type);
if(get_irn_mode(value_node) != mode_b) {
value_node = create_conv(dbgi, value_node, mode_b);
}
if(get_irn_mode(value_node) != mode_b) {
value_node = create_conv(dbgi, value_node, mode_b);
}
@@
-1122,12
+1126,15
@@
static ir_node *unary_expression_to_firm(const unary_expression_t *expression)
case EXPR_UNARY_PREFIX_DECREMENT:
return create_incdec(expression);
case EXPR_UNARY_CAST: {
case EXPR_UNARY_PREFIX_DECREMENT:
return create_incdec(expression);
case EXPR_UNARY_CAST: {
- ir_node *node = create_conv(dbgi, value_node, get_ir_mode(type));
+ ir_mode *mode = get_ir_mode(type);
+ ir_node *node = create_conv(dbgi, value_node, mode);
node = do_strict_conv(dbgi, node);
return node;
}
node = do_strict_conv(dbgi, node);
return node;
}
- case EXPR_UNARY_CAST_IMPLICIT:
- return create_conv(dbgi, value_node, get_ir_mode(type));
+ case EXPR_UNARY_CAST_IMPLICIT: {
+ ir_mode *mode = get_ir_mode(type);
+ return create_conv(dbgi, value_node, mode);
+ }
default:
break;
default:
break;