projects
/
cparser
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
278287b
)
fix deref address again
author
Matthias Braun
<matze@braunis.de>
Fri, 30 Nov 2007 13:15:39 +0000
(13:15 +0000)
committer
Matthias Braun
<matze@braunis.de>
Fri, 30 Nov 2007 13:15:39 +0000
(13:15 +0000)
[r18578]
ast2firm.c
patch
|
blob
|
history
diff --git
a/ast2firm.c
b/ast2firm.c
index
3639f10
..
3b29332
100644
(file)
--- a/
ast2firm.c
+++ b/
ast2firm.c
@@
-1061,6
+1061,7
@@
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->type == UNEXPR_TAKE_ADDRESS)
return expression_to_addr(expression->value);
if(expression->type == UNEXPR_TAKE_ADDRESS)
return expression_to_addr(expression->value);
@@
-1070,26
+1071,26
@@
static ir_node *unary_expression_to_firm(const unary_expression_t *expression)
switch(expression->type) {
case UNEXPR_NEGATE:
switch(expression->type) {
case UNEXPR_NEGATE:
- return new_d_Minus(dbgi, value_node,
get_ir_mode(type)
);
+ return new_d_Minus(dbgi, value_node,
mode
);
case UNEXPR_PLUS:
return value_node;
case UNEXPR_BITWISE_NEGATE:
case UNEXPR_PLUS:
return value_node;
case UNEXPR_BITWISE_NEGATE:
- return new_d_Not(dbgi, value_node,
get_ir_mode(type)
);
+ return new_d_Not(dbgi, value_node,
mode
);
case UNEXPR_NOT: {
if(get_irn_mode(value_node) != mode_b) {
value_node = create_conv(dbgi, value_node, mode_b);
}
value_node = new_d_Not(dbgi, value_node, mode_b);
case UNEXPR_NOT: {
if(get_irn_mode(value_node) != mode_b) {
value_node = create_conv(dbgi, value_node, mode_b);
}
value_node = new_d_Not(dbgi, value_node, mode_b);
- ir_mode *const mode = get_ir_mode(type);
if(mode != mode_b) {
value_node = create_conv(dbgi, value_node, mode);
}
return value_node;
}
case UNEXPR_DEREFERENCE: {
if(mode != mode_b) {
value_node = create_conv(dbgi, value_node, mode);
}
return value_node;
}
case UNEXPR_DEREFERENCE: {
- ir_type *irtype = get_ir_type(type);
+ type_t *value_type = skip_typeref(value->base.datatype);
+ ir_type *irtype = get_ir_type(value_type);
assert(is_Pointer_type(irtype));
assert(is_Pointer_type(irtype));
- ir_type *points_to = get_pointer_points_to_type(irtype);
+ ir_type *points_to
= get_pointer_points_to_type(irtype);
return deref_address(points_to, value_node, dbgi);
}
case UNEXPR_POSTFIX_INCREMENT:
return deref_address(points_to, value_node, dbgi);
}
case UNEXPR_POSTFIX_INCREMENT: