Removed superflous computations, these are done later again.
[cparser] / ast2firm.c
index a205b27..f92f870 100644 (file)
@@ -2524,6 +2524,11 @@ static ir_node *create_cast(dbg_info *dbgi,      ir_node *value_node,
                             type_t *from_type, type_t *type)
 {
        type = skip_typeref(type);
+       if (type == type_void) {
+               /* make sure firm type is constructed */
+               (void) get_ir_type(type);
+               return NULL;
+       }
        if (!is_type_scalar(type)) {
                /* make sure firm type is constructed */
                (void) get_ir_type(type);
@@ -4923,14 +4928,10 @@ static void if_statement_to_firm(if_statement_t *statement)
 
 static void while_statement_to_firm(while_statement_t *statement)
 {
-       ir_node *jmp = NULL;
-       if (get_cur_block() != NULL) {
-               jmp = new_Jmp();
-       }
-
        /* create the header block */
        ir_node *header_block = new_immBlock();
-       if (jmp != NULL) {
+       if (get_cur_block() != NULL) {
+               ir_node *const jmp = new_Jmp();
                add_immBlock_pred(header_block, jmp);
        }
 
@@ -4950,7 +4951,7 @@ static void while_statement_to_firm(while_statement_t *statement)
        break_label    = old_break_label;
 
        if (get_cur_block() != NULL) {
-               jmp = new_Jmp();
+               ir_node *const jmp = new_Jmp();
                add_immBlock_pred(header_block, jmp);
        }
 
@@ -5847,7 +5848,7 @@ static void add_function_pointer(ir_type *segment, ir_entity *method,
 
        set_entity_ld_ident(ptr, new_id_from_chars("", 0));
        set_entity_compiler_generated(ptr, 1);
-       set_entity_visibility(ptr, ir_visibility_local);
+       set_entity_visibility(ptr, ir_visibility_private);
        add_entity_linkage(ptr, IR_LINKAGE_CONSTANT|IR_LINKAGE_HIDDEN_USER);
        set_atomic_ent_value(ptr, val);
 }