[Bug c++/91361] Implement P1152R4: Deprecating some uses of volatile

2019-08-28 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91361

--- Comment #4 from Marek Polacek  ---
Author: mpolacek
Date: Thu Aug 29 03:11:50 2019
New Revision: 275022

URL: https://gcc.gnu.org/viewcvs?rev=275022=gcc=rev
Log:
Implement P1152R4: Deprecating some uses of volatile.
PR c++/91361
* c-opts.c (c_common_post_options): Enable -Wvolatile by
default for C++2a, unless -Wno-deprecated.
* c.opt (Wvolatile): New warning.

* cp-gimplify.c (cp_fold): Set TREE_THIS_VOLATILE.
* decl.c (grokdeclarator): Warn about a volatile-qualified structured
binding and return type.
(grokparms): Warn about a volatile-qualified function parameter.
* expr.c (mark_use) : Emit a -Wvolatile warning.
* typeck.c (cp_build_unary_op): Emit a -Wvolatile warning for pre and
post ++/-- on a volatile operand.
(genericize_compound_lvalue): Use a better location.  Don't lose
TREE_THIS_VOLATILE.
(cp_build_modify_expr): Emit a -Wvolatile warning for a compound
assignment whose LHS is volatile-qualified.  Build the assignment with
a more precise location.

* doc/invoke.texi: Document -Wvolatile.

* c-c++-common/Wbool-operation-1.c: Use -Wno-volatile in C++.
* c-c++-common/gomp/atomic-1.c: Likewise.
* c-c++-common/gomp/atomic-9.c: Likewise.
* c-c++-common/gomp/depend-iterator-1.c: Likewise.
* c-c++-common/gomp/loop-1.c: Adjust warning location for C++.
* c-c++-common/gomp/order-3.c: Likewise.
* c-c++-common/pr69733.c: Use -Wno-volatile in C++.
* c-c++-common/spec-barrier-2.c: Likewise.
* c-c++-common/tm/pr54893.c: Likewise.
* g++.dg/cpp0x/pr65327.C: Add dg-warning.
* g++.dg/cpp0x/rv-conv2.C: Likewise.
* g++.dg/cpp0x/rv1n.C: Likewise.
* g++.dg/cpp0x/rv1p.C: Likewise.
* g++.dg/cpp0x/rv2n.C: Likewise.
* g++.dg/cpp0x/rv2p.C: Likewise.
* g++.dg/cpp0x/rv3n.C: Likewise.
* g++.dg/cpp0x/rv3p.C: Likewise.
* g++.dg/cpp0x/rv4n.C: Likewise.
* g++.dg/cpp0x/rv4p.C: Likewise.
* g++.dg/cpp0x/rv5n.C: Likewise.
* g++.dg/cpp0x/rv5p.C: Likewise.
* g++.dg/cpp0x/rv6n.C: Likewise.
* g++.dg/cpp0x/rv6p.C: Likewise.
* g++.dg/cpp0x/rv7n.C: Likewise.
* g++.dg/cpp0x/rv7p.C: Likewise.
* g++.dg/cpp0x/rv8p.C: Likewise.
* g++.dg/cpp0x/trailing14.C: Use -Wno-volatile.
* g++.dg/cpp1y/new1.C: Add dg-warning.
* g++.dg/cpp2a/volatile1.C: New test.
* g++.dg/cpp2a/volatile2.C: New test.
* g++.dg/cpp2a/volatile3.C: New test.
* g++.dg/cpp2a/volatile4.C: New test.
* g++.dg/expr/bool3.C: Add dg-warning.
* g++.dg/expr/bool4.C: Likewise.
* g++.dg/expr/cond9.C: Likewise.
* g++.dg/ext/vector25.C: Likewise.
* g++.dg/gomp/depend-iterator-1.C: Use -Wno-volatile.
* g++.dg/inherit/covariant21.C: Add dg-warning.
* g++.dg/init/ref18.C: Likewise.
* g++.dg/ipa/pr63838.C: Likewise.
* g++.dg/overload/rvalue2.C: Likewise.
* g++.dg/parse/semicolon4.C: Likewise.
* g++.dg/warn/Wreturn-type-4.C: Likewise.
* g++.dg/warn/pr36069.C: Likewise.
* g++.old-deja/g++.mike/p9506.C: Likewise.
* g++.old-deja/g++.other/volatile1.C: Likewise.

Added:
trunk/gcc/testsuite/g++.dg/cpp2a/volatile1.C
trunk/gcc/testsuite/g++.dg/cpp2a/volatile2.C
trunk/gcc/testsuite/g++.dg/cpp2a/volatile3.C
trunk/gcc/testsuite/g++.dg/cpp2a/volatile4.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-opts.c
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-gimplify.c
trunk/gcc/cp/decl.c
trunk/gcc/cp/expr.c
trunk/gcc/cp/typeck.c
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/c-c++-common/Wbool-operation-1.c
trunk/gcc/testsuite/c-c++-common/gomp/atomic-1.c
trunk/gcc/testsuite/c-c++-common/gomp/atomic-9.c
trunk/gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
trunk/gcc/testsuite/c-c++-common/gomp/loop-1.c
trunk/gcc/testsuite/c-c++-common/gomp/order-3.c
trunk/gcc/testsuite/c-c++-common/pr69733.c
trunk/gcc/testsuite/c-c++-common/spec-barrier-2.c
trunk/gcc/testsuite/c-c++-common/tm/pr54893.c
trunk/gcc/testsuite/g++.dg/cpp0x/pr65327.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv-conv2.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv1n.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv1p.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv2n.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv2p.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv3n.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv3p.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv4n.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv4p.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv5n.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv5p.C
trunk/gcc/testsuite/g++.dg/cpp0x/rv6n.C

[Bug c++/91361] Implement P1152R4: Deprecating some uses of volatile

2019-08-28 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91361

Marek Polacek  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Marek Polacek  ---
Implemented in GCC 10.1.

[Bug c++/91361] Implement P1152R4: Deprecating some uses of volatile

2019-08-23 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91361

Marek Polacek  changed:

   What|Removed |Added

   Keywords||patch

--- Comment #3 from Marek Polacek  ---
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01661.html

[Bug c++/91361] Implement P1152R4: Deprecating some uses of volatile

2019-08-05 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91361

--- Comment #2 from Marek Polacek  ---
Actually, no reason not to link R4: .

[Bug c++/91361] Implement P1152R4: Deprecating some uses of volatile

2019-08-05 Thread mpolacek at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91361

Marek Polacek  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2019-08-05
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Marek Polacek  ---
I'll take a look.  Should be mostly about adding a few warnings.