From 093e3d311cce006ccf99531fb0c6b5d64d691be9 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Thu, 14 May 2009 11:29:33 +0000 Subject: [PATCH] fix fehler127 (again) [r25946] --- ast2firm.c | 30 +++++++++++++++--------------- parser.c | 25 ------------------------- 2 files changed, 15 insertions(+), 40 deletions(-) diff --git a/ast2firm.c b/ast2firm.c index 9402815..5ab49ec 100644 --- a/ast2firm.c +++ b/ast2firm.c @@ -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: { diff --git a/parser.c b/parser.c index 4b51c8b..07886f4 100644 --- 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. */ -- 2.20.1