c-typeck.c (build_c_cast): Fold constant variables into initial values.
* c-typeck.c (build_c_cast): Fold constant variables into initial values. * gcc.dg/c90-const-expr-3.c (DZERO): New static variable (foo): Add few extra tests * gcc.dg/c99-const-expr-3.c: Likewise. * gcc.c-torture/execute/20030216-1.c: New. From-SVN: r62987
This commit is contained in:
parent
35113fde34
commit
096daf41db
6 changed files with 38 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
Sun Feb 16 23:07:52 CET 2003 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* c-typeck.c (build_c_cast): Fold constant variables into
|
||||
initial values.
|
||||
|
||||
2003-02-16 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
|
||||
|
||||
* doc/install.texi (Specific): Fix link for m68k-att-sysv.
|
||||
|
|
|
@ -3765,8 +3765,11 @@ build_c_cast (type, expr)
|
|||
get_alias_set (TREE_TYPE (type))))
|
||||
warning ("dereferencing type-punned pointer will break strict-aliasing rules");
|
||||
}
|
||||
|
||||
|
||||
ovalue = value;
|
||||
/* Replace a nonvolatile const static variable with its value. */
|
||||
if (optimize && TREE_CODE (value) == VAR_DECL)
|
||||
value = decl_constant_value (value);
|
||||
value = convert (type, value);
|
||||
|
||||
/* Ignore any integer overflow caused by the cast. */
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
Sun Feb 16 23:08:19 CET 2003 Jan HUbicka <jh@suse.cz>
|
||||
|
||||
* gcc.dg/c90-const-expr-3.c (DZERO): New static variable
|
||||
(foo): Add few extra tests
|
||||
* gcc.dg/c99-const-expr-3.c: Likewise.
|
||||
* gcc.c-torture/execute/20030216-1.c: New.
|
||||
|
||||
2003-02-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
|
||||
|
||||
PR c++/9459
|
||||
|
|
10
gcc/testsuite/gcc.c-torture/execute/20030216-1.c
Normal file
10
gcc/testsuite/gcc.c-torture/execute/20030216-1.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
void link_error (void);
|
||||
const double one=1.0;
|
||||
main ()
|
||||
{
|
||||
#ifdef __OPTIMIZE__
|
||||
if ((int) one != 1)
|
||||
link_error ();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
|
@ -6,6 +6,7 @@
|
|||
to give the correct behavior to conforming programs. */
|
||||
|
||||
static const int ZERO = 0;
|
||||
static const double DZERO = 0;
|
||||
|
||||
int *a;
|
||||
int b;
|
||||
|
@ -36,4 +37,9 @@ foo (void)
|
|||
ASSERT_NOT_NPC ((char) ZERO);
|
||||
ASSERT_NPC ((int) 0);
|
||||
ASSERT_NOT_NPC ((int) ZERO);
|
||||
ASSERT_NPC ((int) 0.0);
|
||||
ASSERT_NOT_NPC ((int) DZERO);
|
||||
ASSERT_NOT_NPC ((int) +0.0); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
|
||||
ASSERT_NOT_NPC ((int) (0.0+0.0)); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
|
||||
ASSERT_NOT_NPC ((int) (double)0.0); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
to give the correct behavior to conforming programs. */
|
||||
|
||||
static const int ZERO = 0;
|
||||
static const double DZERO = 0;
|
||||
|
||||
int *a;
|
||||
int b;
|
||||
|
@ -36,4 +37,9 @@ foo (void)
|
|||
ASSERT_NOT_NPC ((char) ZERO);
|
||||
ASSERT_NPC ((int) 0);
|
||||
ASSERT_NOT_NPC ((int) ZERO);
|
||||
ASSERT_NPC ((int) 0.0);
|
||||
ASSERT_NOT_NPC ((int) DZERO);
|
||||
ASSERT_NOT_NPC ((int) +0.0); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
|
||||
ASSERT_NOT_NPC ((int) (0.0+0.0)); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
|
||||
ASSERT_NOT_NPC ((int) (double)0.0); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue