aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2014-05-08 17:42:09 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2014-05-08 17:42:09 +0000
commitf827930ae282f8ae4bedf0a38dbc2fa99d2b3d08 (patch)
tree761bbf96a5b2bd42adfa8daa925ffb28083fc9f5 /gcc
parentf0fd118f53ae2ba7384a94c6821458275e6c226c (diff)
downloadgcc-f827930ae282f8ae4bedf0a38dbc2fa99d2b3d08.zip
gcc-f827930ae282f8ae4bedf0a38dbc2fa99d2b3d08.tar.gz
gcc-f827930ae282f8ae4bedf0a38dbc2fa99d2b3d08.tar.bz2
re PR c/61077 (_Atomic in the return type or argument types of main not diagnosed)
PR c/61077 c-family/ * c-common.c (check_main_parameter_types): Warn for _Atomic-qualified parameter type of main. c/ * c-decl.c (start_function): Warn for _Atomic-qualified return type of main. testsuite/ * gcc.dg/pr61077.c: New test. From-SVN: r210229
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-common.c14
-rw-r--r--gcc/c/ChangeLog6
-rw-r--r--gcc/c/c-decl.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr61077.c12
6 files changed, 46 insertions, 0 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index b7c65d3..06a1b14 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2014-05-08 Marek Polacek <polacek@redhat.com>
+
+ PR c/61077
+ * c-common.c (check_main_parameter_types): Warn for _Atomic-qualified
+ parameter type of main.
+
2014-05-07 DJ Delorie <dj@redhat.com>
* c-cppbuiltin.c (print_bits_of_hex): New.
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index 0afe2f5..33ad250 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -2193,6 +2193,20 @@ check_main_parameter_types (tree decl)
if (type == void_type_node || type == error_mark_node )
break;
+ tree t = type;
+ if (TYPE_ATOMIC (t))
+ pedwarn (input_location, OPT_Wmain,
+ "%<_Atomic%>-qualified parameter type %qT of %q+D",
+ type, decl);
+ while (POINTER_TYPE_P (t))
+ {
+ t = TREE_TYPE (t);
+ if (TYPE_ATOMIC (t))
+ pedwarn (input_location, OPT_Wmain,
+ "%<_Atomic%>-qualified parameter type %qT of %q+D",
+ type, decl);
+ }
+
++argct;
switch (argct)
{
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 379b8d7..8925371 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2014-05-08 Marek Polacek <polacek@redhat.com>
+
+ PR c/61077
+ * c-decl.c (start_function): Warn for _Atomic-qualified return type
+ of main.
+
2014-05-06 Kenneth Zadeck <zadeck@naturalbridge.com>
Mike Stump <mikestump@comcast.net>
Richard Sandiford <rdsandiford@googlemail.com>
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 3abf6b9..d8631fc 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -8045,6 +8045,9 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (decl1)))
!= integer_type_node)
pedwarn (loc, OPT_Wmain, "return type of %qD is not %<int%>", decl1);
+ else if (TYPE_ATOMIC (TREE_TYPE (TREE_TYPE (decl1))))
+ pedwarn (loc, OPT_Wmain, "%<_Atomic%>-qualified return type of %qD",
+ decl1);
check_main_parameter_types (decl1);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7ea4d9e..fe0683e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-05-08 Marek Polacek <polacek@redhat.com>
+
+ PR c/61077
+ * gcc.dg/pr61077.c: New test.
+
2014-05-08 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_collectives_1.f90: New.
diff --git a/gcc/testsuite/gcc.dg/pr61077.c b/gcc/testsuite/gcc.dg/pr61077.c
new file mode 100644
index 0000000..c0513f7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr61077.c
@@ -0,0 +1,12 @@
+/* PR c/61077 */
+/* { dg-do compile } */
+/* { dg-options "-std=c11 -Wall" } */
+
+_Atomic int
+main (_Atomic int argc, _Atomic char **argv)
+/* { dg-warning "qualified return type" "return" { target *-*-* } 6 } */
+/* { dg-warning "qualified parameter type.*int" "parameter" { target *-*-* } 6 } */
+/* { dg-warning "qualified parameter type.*char" "parameter" { target *-*-* } 6 } */
+{
+ return 0;
+}