From 5252fe4c72cb4fa138c518dca6e1d574da079d7b Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Sat, 17 Nov 2007 14:40:38 +0000 Subject: [PATCH] Handle implicit casts from 0 to pointers in comparisons. [r18443] --- parser.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/parser.c b/parser.c index 43e951b..d3dc554 100644 --- a/parser.c +++ b/parser.c @@ -3118,6 +3118,17 @@ static void semantic_comparison(binary_expression_t *expression) expression->left = create_implicit_cast(left, arithmetic_type); expression->right = create_implicit_cast(right, arithmetic_type); expression->expression.datatype = arithmetic_type; + } else if (type_left->type == TYPE_POINTER && + type_right->type == TYPE_POINTER) { + /* TODO check compatibility */ + } else if (type_left->type == TYPE_POINTER) { + expression->right = create_implicit_cast(right, type_left); + } else if (type_right->type == TYPE_POINTER) { + expression->left = create_implicit_cast(left, type_right); + } else { + type_error_incompatible("invalid operands in comparison", + expression->expression.source_position, + type_left, type_right); } expression->expression.datatype = type_int; } -- 2.20.1