X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast2firm.c;h=4cc9da6ec4aa315a8ea072f1a81a69802fe2723a;hb=a828a34bd8d39c98f85a6822cf0af23605447b31;hp=63bd35030f847acf3f3b1144a8abef6ef5a1b0f2;hpb=00fad4c6c28b600fd17a6c3e8320dd6227c28e30;p=cparser diff --git a/ast2firm.c b/ast2firm.c index 63bd350..4cc9da6 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -1727,10 +1727,14 @@ static ir_node *unary_expression_to_firm(const unary_expression_t *expression) return create_incdec(expression); case EXPR_UNARY_CAST: { ir_node *value_node = expression_to_firm(value); - ir_mode *mode = get_ir_mode(type); - ir_node *node = create_conv(dbgi, value_node, mode); - node = do_strict_conv(dbgi, node); - return node; + if(is_type_scalar(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; + } else { + return value_node; + } } case EXPR_UNARY_CAST_IMPLICIT: { ir_node *value_node = expression_to_firm(value); @@ -3106,6 +3110,9 @@ static ir_node *compound_statement_to_firm(compound_statement_t *compound) static void create_local_declaration(declaration_t *declaration) { + if(declaration->symbol == NULL) + return; + type_t *type = skip_typeref(declaration->type); switch ((storage_class_tag_t) declaration->storage_class) {