This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/19708] [4.0 Regression] does not fold "&int_cst->a" to just INT_CST
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 30 Jan 2005 14:14:51 -0000
- Subject: [Bug middle-end/19708] [4.0 Regression] does not fold "&int_cst->a" to just INT_CST
- References: <20050130104618.19708.amodra@bigpond.net.au>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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