------- Additional Comments From pinskia at gcc dot gnu dot org 2005-01-30 14:14 ------- The easiest fix would be to fold it in the front-end for all INT_CST's like the following with a slight comment fix above: Index: c-typeck.c =============================================================== ==== RCS file: /cvs/gcc/gcc/gcc/c-typeck.c,v retrieving revision 1.415 diff -u -p -r1.415 c-typeck.c --- c-typeck.c 29 Jan 2005 16:12:38 -0000 1.415 +++ c-typeck.c 30 Jan 2005 14:13:00 -0000 @@ -2683,7 +2683,7 @@ build_unary_op (enum tree_code code, tre when we have proper support for integer constant expressions. */ val = get_base_address (arg); if (val && TREE_CODE (val) == INDIRECT_REF - && integer_zerop (TREE_OPERAND (val, 0))) + && TREE_CODE (TREE_OPERAND (val, 0)) == INTEGER_CST) return fold_convert (argtype, fold_offsetof (arg)); val = build1 (ADDR_EXPR, argtype, arg);
-- What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.0 Regression] fold does |[4.0 Regression] does not |not fold "&int_cst->a" |fold "&int_cst->a" to just | |INT_CST http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19708