comparison gcc/c-common.c @ 47:3bfb6c00c1e0

update it from 4.4.2 to 4.4.3.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Sun, 07 Feb 2010 17:44:34 +0900
parents 855418dad1a3
children 9907f3135723 77e2b8dfacca
comparison
equal deleted inserted replaced
46:b85a337e5837 47:3bfb6c00c1e0
7631 case CALL_EXPR: 7631 case CALL_EXPR:
7632 case TARGET_EXPR: 7632 case TARGET_EXPR:
7633 error ("cannot apply %<offsetof%> when %<operator[]%> is overloaded"); 7633 error ("cannot apply %<offsetof%> when %<operator[]%> is overloaded");
7634 return error_mark_node; 7634 return error_mark_node;
7635 7635
7636 case INTEGER_CST:
7637 gcc_assert (integer_zerop (expr));
7638 return size_zero_node;
7639
7640 case NOP_EXPR: 7636 case NOP_EXPR:
7641 case INDIRECT_REF: 7637 case INDIRECT_REF:
7642 base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref); 7638 if (!integer_zerop (TREE_OPERAND (expr, 0)))
7643 gcc_assert (base == error_mark_node || base == size_zero_node); 7639 {
7644 return base; 7640 error ("cannot apply %<offsetof%> to a non constant address");
7641 return error_mark_node;
7642 }
7643 return size_zero_node;
7645 7644
7646 case COMPONENT_REF: 7645 case COMPONENT_REF:
7647 base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref); 7646 base = fold_offsetof_1 (TREE_OPERAND (expr, 0), stop_ref);
7648 if (base == error_mark_node) 7647 if (base == error_mark_node)
7649 return base; 7648 return base;