------- Comment #2 from rguenth at gcc dot gnu dot org 2009-03-15 12:08 -------
This is because convert_for_assignment does not know about the pointer target
difference due to the may_alias attribute. Note that I think a warning is
appropriate here, just the one emitted is confusing.
Something like
/* If this is a difference in target attributes, do war. */
else if (!attribute_list_equal (TYPE_ATTRIBUTES (ttl),
TYPE_ATTRIBUTES (ttr)))
WARN_FOR_ASSIGNMENT (input_location, 0,
G_("pointer targets in passing argument "
"%d of %qE have different attributes"),
G_("pointer targets in assignment "
"have different attributes"),
G_("pointer targets in initialization "
"have different attributes"),
G_("pointer targets in return have "
"different attributes"));
/* If this is not a case of ignoring a mismatch in signedness,
no warning. */
would be an improvement.
./cc1 -quiet -Wall t.i
t.i: In function 'foo':
t.i:5: warning: pointer targets in initialization have different attributes
Mine.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot
|dot org |org
Status|UNCONFIRMED |ASSIGNED
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2009-03-15 12:08:59
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39464