* 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
+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.
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. */
+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
--- /dev/null
+void link_error (void);
+const double one=1.0;
+main ()
+{
+#ifdef __OPTIMIZE__
+ if ((int) one != 1)
+ link_error ();
+#endif
+ return 0;
+}
to give the correct behavior to conforming programs. */
static const int ZERO = 0;
+static const double DZERO = 0;
int *a;
int b;
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 *-*-* } } */
}
to give the correct behavior to conforming programs. */
static const int ZERO = 0;
+static const double DZERO = 0;
int *a;
int b;
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 *-*-* } } */
}