fix fehler127 (again)
authorMatthias Braun <matze@braunis.de>
Thu, 14 May 2009 11:29:33 +0000 (11:29 +0000)
committerMatthias Braun <matze@braunis.de>
Thu, 14 May 2009 11:29:33 +0000 (11:29 +0000)
[r25946]

ast2firm.c
parser.c

index 9402815..5ab49ec 100644 (file)
@@ -1455,6 +1455,21 @@ static ir_node *reference_expression_to_firm(const reference_expression_t *ref)
        /* make sure the type is constructed */
        (void) get_ir_type(type);
 
+       /* for gcc compatibility we have to produce (dummy) addresses for some
+        * builtins */
+       if (entity->kind == ENTITY_FUNCTION && entity->function.btk != bk_none) {
+               if (warning.other) {
+                       warningf(&ref->base.source_position,
+                                       "taking address of builtin '%Y'", ref->entity->base.symbol);
+               }
+
+               /* simply create a NULL pointer */
+               ir_mode  *mode = get_ir_mode_arithmetic(type_void_ptr);
+               ir_node  *res  = new_Const_long(mode, 0);
+
+               return res;
+       }
+
        switch ((declaration_kind_t) entity->declaration.kind) {
        case DECLARATION_KIND_UNKNOWN:
                break;
@@ -1471,21 +1486,6 @@ static ir_node *reference_expression_to_firm(const reference_expression_t *ref)
        }
        case DECLARATION_KIND_FUNCTION: {
                ir_mode *const mode = get_ir_mode_storage(type);
-
-               if (entity->function.btk != bk_none) {
-                       /* for gcc compatibility we have to produce (dummy) addresses for some
-                        * builtins */
-                       if (warning.other) {
-                               warningf(&ref->base.source_position,
-                                       "taking address of builtin '%Y'", ref->entity->base.symbol);
-                       }
-
-                       /* simply create a NULL pointer */
-                       ir_mode  *mode = get_ir_mode_arithmetic(type_void_ptr);
-                       ir_node  *res  = new_Const_long(mode, 0);
-
-                       return res;
-               }
                return create_symconst(dbgi, mode, entity->function.irentity);
        }
        case DECLARATION_KIND_INNER_FUNCTION: {
index 4b51c8b..07886f4 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -7012,31 +7012,6 @@ end_error:
        return create_invalid_expression();
 }
 
-#if 0
-/**
- * Parses a __builtin_expect(, end_error) expression.
- */
-static expression_t *parse_builtin_expect(void, end_error)
-{
-       expression_t *expression
-               = allocate_expression_zero(EXPR_BINARY_BUILTIN_EXPECT);
-
-       eat(T___builtin_expect);
-
-       expect('(', end_error);
-       expression->binary.left = parse_assignment_expression();
-       expect(',', end_error);
-       expression->binary.right = parse_constant_expression();
-       expect(')', end_error);
-
-       expression->base.type = expression->binary.left->base.type;
-
-       return expression;
-end_error:
-       return create_invalid_expression();
-}
-#endif
-
 /**
  * Parses a MS assume() expression.
  */