comparison gcc/c-common.c @ 48:9907f3135723

update CbC on GCC from 4.4.2 to 4.4.3.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Sun, 07 Feb 2010 17:48:31 +0900
parents 27e6f95b2c21 3bfb6c00c1e0
children 326d9e06c2e3
comparison
equal deleted inserted replaced
45:d645ac0f55d6 48:9907f3135723
7640 case CALL_EXPR: 7640 case CALL_EXPR:
7641 case TARGET_EXPR: 7641 case TARGET_EXPR:
7642 error ("cannot apply %<offsetof%> when %<operator[]%> is overloaded"); 7642 error ("cannot apply %<offsetof%> when %<operator[]%> is overloaded");
7643 return error_mark_node; 7643 return error_mark_node;
7644 7644
7645 case INTEGER_CST:
7646 gcc_assert (integer_zerop (expr));
7647 return size_zero_node;
7648
7649 case NOP_EXPR: 7645 case NOP_EXPR:
7650 case INDIRECT_REF: 7646 case INDIRECT_REF:
7651 base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref); 7647 if (!integer_zerop (TREE_OPERAND (expr, 0)))
7652 gcc_assert (base == error_mark_node || base == size_zero_node); 7648 {
7653 return base; 7649 error ("cannot apply %<offsetof%> to a non constant address");
7650 return error_mark_node;
7651 }
7652 return size_zero_node;
7654 7653
7655 case COMPONENT_REF: 7654 case COMPONENT_REF:
7656 base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref); 7655 base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref);
7657 if (base == error_mark_node) 7656 if (base == error_mark_node)
7658 return base; 7657 return base;