re PR c/13382 (Type information for const pointer disappears during optimisation.)

PR c/13382
	* c-typeck.c (convert_for_assignment): When converting from
	integral type to pointer type, always call convert.

From-SVN: r74960
This commit is contained in:
Eric Botcazou 2003-12-23 06:26:41 +01:00 committed by Eric Botcazou
parent adb83beed2
commit b300633777
4 changed files with 32 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2003-12-23 Eric Botcazou <ebotcazou@libertysurf.fr>
PR c/13382
* c-typeck.c (convert_for_assignment): When converting from
integral type to pointer type, always call convert.
2003-12-22 Mark Mitchell <mark@codesourcery.com>
* doc/invoke.texi: Deprecate -fwritable-strings.

View File

@ -3608,12 +3608,10 @@ convert_for_assignment (tree type, tree rhs, const char *errtype,
&& TREE_CODE (TREE_TYPE (rhs)) == INTEGER_TYPE
&& TREE_CODE (TREE_OPERAND (rhs, 0)) == INTEGER_CST
&& integer_zerop (TREE_OPERAND (rhs, 0))))
{
warn_for_assignment ("%s makes pointer from integer without a cast",
errtype, funname, parmnum);
return convert (type, rhs);
}
return null_pointer_node;
return convert (type, rhs);
}
else if (codel == INTEGER_TYPE && coder == POINTER_TYPE)
{

View File

@ -1,3 +1,7 @@
2003-12-23 Eric Botcazou <ebotcazou@libertysurf.fr>
* gcc.dg/null-pointer-1.c: New test.
2003-12-22 Mark Mitchell <mark@codesourcery.com>
* g++.old-deja/g++.jason/template18.C: Remove.

View File

@ -0,0 +1,20 @@
/* PR c/13382 */
/* Origin: Richard Hutchinson <richard.hutchinson@asa.co.uk> */
/* Verify that the null initializer is converted to the right
pointer type. */
/* { dg-do compile } */
/* { dg-options "-O" } */
struct t
{
int aMember;
};
struct t *const aPointer = 0;
void foo()
{
int anInt = (aPointer == 0) ? 0 : aPointer->aMember;
}