* c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
variable with an anonymous type.
fortran/:
* cpp.c (struct gfc_cpp_option_data): Give this struct, used for
the global variable gfc_cpp_option, a name.
testsuite/:
* gcc.dg/Wcxx-compat-16.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148708
138bc75d-0d04-0410-961f-
82ee72b054a4
+2009-06-19 Ian Lance Taylor <iant@google.com>
+
+ * c-decl.c (grokdeclarator): If -Wc++-compat, warn about a global
+ variable with an anonymous type.
+
2009-06-19 Uros Bizjak <ubizjak@gmail.com>
* see.c: Remove for real.
name of a variable. Thus, if it's known before this, die horribly. */
gcc_assert (!DECL_ASSEMBLER_NAME_SET_P (decl));
+ if (warn_cxx_compat
+ && TREE_CODE (decl) == VAR_DECL
+ && TREE_PUBLIC (decl)
+ && TREE_STATIC (decl)
+ && (TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE
+ || TREE_CODE (TREE_TYPE (decl)) == UNION_TYPE
+ || TREE_CODE (TREE_TYPE (decl)) == ENUMERAL_TYPE)
+ && TYPE_NAME (TREE_TYPE (decl)) == NULL_TREE)
+ warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wc___compat,
+ ("non-local variable %qD with anonymous type is "
+ "questionable in C++"),
+ decl);
+
return decl;
}
}
+2009-06-19 Ian Lance Taylor <iant@google.com>
+
+ * cpp.c (struct gfc_cpp_option_data): Give this struct, used for
+ the global variable gfc_cpp_option, a name.
+
2009-06-19 Janus Weil <janus@gcc.gnu.org>
PR fortran/40450
} gfc_cpp_macro_queue;
static gfc_cpp_macro_queue *cpp_define_queue, *cpp_undefine_queue;
-struct
+struct gfc_cpp_option_data
{
/* Argument of -cpp, implied by SPEC;
if NULL, preprocessing disabled. */
+2009-06-19 Ian Lance Taylor <iant@google.com>
+
+ * gcc.dg/Wcxx-compat-16.c: New testcase.
+
2009-06-19 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/builtins-34.c: Add significand cases.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-Wc++-compat" } */
+
+struct { int f1; } g1; /* { dg-warning "C\[+\]\[+\]" } */
+static struct { int f2; } g2;
+struct s { int f3; } g3;
+union { int f4; } g4; /* { dg-warning "C\[+\]\[+\]" } */
+static union { int f5; } g5;
+union u { int f6; } g6;
+enum { A } g7; /* { dg-warning "C\[+\]\[+\]" } */
+static enum { B } g8;
+enum E { C } g9;