Commit 0c4b14c4 by Jason Merrill

[multiple changes]

Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* lang-options.h: new -Wold-style-cast flag.
	* cp-tree.h (warn_old_style_cast): new variable.
	* decl2.c (warn_old_style_cast): ditto.
	(lang_decode_option): support -Wold-style-cast.
	(reparse_absdcl_as_casts): produce old-style-cast warning.

Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* decl.c (cp_finish_decl): Allow expand_aggr_init to set
 	TREE_USED, reset value based on already_used.

	* init.c (expand_member_init): Revert change.

From-SVN: r15793
parent 974c50f9
Mon Sep 29 11:05:54 1997 Alexandre Oliva <oliva@dcc.unicamp.br>
* lang-options.h: new -Wold-style-cast flag.
* cp-tree.h (warn_old_style_cast): new variable.
* decl2.c (warn_old_style_cast): ditto.
(lang_decode_option): support -Wold-style-cast.
(reparse_absdcl_as_casts): produce old-style-cast warning.
Mon Sep 29 09:20:53 1997 Benjamin Kosnik <bkoz@rhino.cygnus.com>
* decl.c (cp_finish_decl): Allow expand_aggr_init to set
TREE_USED, reset value based on already_used.
* init.c (expand_member_init): Revert change.
Mon Sep 29 08:57:53 1997 Jason Merrill <jason@yorick.cygnus.com> Mon Sep 29 08:57:53 1997 Jason Merrill <jason@yorick.cygnus.com>
* cp-tree.h, decl.c, decl2.c, pt.c: * cp-tree.h, decl.c, decl2.c, pt.c:
......
...@@ -257,6 +257,10 @@ extern int warn_sign_promo; ...@@ -257,6 +257,10 @@ extern int warn_sign_promo;
extern int warn_extern_inline; extern int warn_extern_inline;
/* Non-zero means warn when an old-style cast is used. */
extern int warn_old_style_cast;
/* Nonzero means to treat bitfields as unsigned unless they say `signed'. */ /* Nonzero means to treat bitfields as unsigned unless they say `signed'. */
extern int flag_signed_bitfields; extern int flag_signed_bitfields;
......
...@@ -6299,6 +6299,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) ...@@ -6299,6 +6299,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
int temporary = allocation_temporary_p (); int temporary = allocation_temporary_p ();
char *asmspec = NULL; char *asmspec = NULL;
int was_readonly = 0; int was_readonly = 0;
int already_used = 0;
/* If this is 0, then we did not change obstacks. */ /* If this is 0, then we did not change obstacks. */
if (! decl) if (! decl)
...@@ -6858,6 +6859,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) ...@@ -6858,6 +6859,7 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
{ {
/* Compute and store the initial value. */ /* Compute and store the initial value. */
expand_decl_init (decl); expand_decl_init (decl);
already_used = TREE_USED (decl) || TREE_USED (type);
if (init || TYPE_NEEDS_CONSTRUCTING (type)) if (init || TYPE_NEEDS_CONSTRUCTING (type))
{ {
...@@ -6870,10 +6872,15 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags) ...@@ -6870,10 +6872,15 @@ cp_finish_decl (decl, init, asmspec_tree, need_pop, flags)
was initialized was ever used. Don't do this if it has a was initialized was ever used. Don't do this if it has a
destructor, so we don't complain about the 'resource destructor, so we don't complain about the 'resource
allocation is initialization' idiom. */ allocation is initialization' idiom. */
if (TYPE_NEEDS_CONSTRUCTING (type) if (TYPE_NEEDS_CONSTRUCTING (type)
&& ! already_used
&& cleanup == NULL_TREE && cleanup == NULL_TREE
&& DECL_NAME (decl)) && DECL_NAME (decl))
TREE_USED (decl) = 0; TREE_USED (decl) = 0;
if (already_used)
TREE_USED (decl) = 1;
} }
/* Cleanup any temporaries needed for the initial value. */ /* Cleanup any temporaries needed for the initial value. */
......
...@@ -268,6 +268,10 @@ int warn_ecpp; ...@@ -268,6 +268,10 @@ int warn_ecpp;
int warn_sign_promo; int warn_sign_promo;
/* Nonzero means warn when an old-style cast is used. */
int warn_old_style_cast;
/* Nonzero means `$' can be in an identifier. /* Nonzero means `$' can be in an identifier.
See cccp.c for reasons why this breaks some obscure ANSI C programs. */ See cccp.c for reasons why this breaks some obscure ANSI C programs. */
...@@ -649,6 +653,8 @@ lang_decode_option (p) ...@@ -649,6 +653,8 @@ lang_decode_option (p)
warn_ecpp = setting; warn_ecpp = setting;
else if (!strcmp (p, "sign-promo")) else if (!strcmp (p, "sign-promo"))
warn_sign_promo = setting; warn_sign_promo = setting;
else if (!strcmp (p, "old-style-cast"))
warn_old_style_cast = setting;
else if (!strcmp (p, "comment")) else if (!strcmp (p, "comment"))
; /* cpp handles this one. */ ; /* cpp handles this one. */
else if (!strcmp (p, "comments")) else if (!strcmp (p, "comments"))
...@@ -3375,6 +3381,9 @@ reparse_absdcl_as_casts (decl, expr) ...@@ -3375,6 +3381,9 @@ reparse_absdcl_as_casts (decl, expr)
expr = build_c_cast (type, expr); expr = build_c_cast (type, expr);
} }
if (warn_old_style_cast)
warning ("use of old-style cast");
return expr; return expr;
} }
......
...@@ -111,3 +111,5 @@ Boston, MA 02111-1307, USA. */ ...@@ -111,3 +111,5 @@ Boston, MA 02111-1307, USA. */
"-Wno-effc++", "-Wno-effc++",
"-Wsign-promo", "-Wsign-promo",
"-Wno-sign-promo", "-Wno-sign-promo",
"-Wold-style-cast",
"-Wno-old-style-cast",
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment