This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/26724] __builtin_constant_p fails to recognise function with constant return
- 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: 17 Mar 2006 15:20:33 -0000
- Subject: [Bug middle-end/26724] __builtin_constant_p fails to recognise function with constant return
- References: <bug-26724-8090@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from pinskia at gcc dot gnu dot org 2006-03-17 15:20 -------
Confirmed, the problem is:
/* If this expression has side effects, show we don't know it to be a
constant. Likewise if it's a pointer or aggregate type since in
those case we only want literals, since those are only optimized
when generating RTL, not later.
And finally, if we are compiling an initializer, not code, we
need to return a definite result now; there's not going to be any
more optimization done. */
if (TREE_SIDE_EFFECTS (arglist)
|| AGGREGATE_TYPE_P (TREE_TYPE (arglist))
|| POINTER_TYPE_P (TREE_TYPE (arglist))
|| cfun == 0)
return integer_zero_node;
I don't know much about anything else but a work around is using a variable to
store the results (yes this is stupid and it should not dependent on that).
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Component|tree-optimization |middle-end
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2006-03-17 15:20:33
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26724