invoke.texi (-Wno-prio-ctor-dtor): Document new warning -Wno-prio-ctor-dtor.
authorVinay Kumar <vinay.kumar@blackfigtech.com>
Thu, 4 Oct 2018 18:23:25 +0000 (18:23 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 4 Oct 2018 18:23:25 +0000 (12:23 -0600)
* doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning
-Wno-prio-ctor-dtor.

* c-attribs.c (get_priority): Add a warning flag warn_prio_ctor_dtor
to generate constructor destructor priority warning.
* c.opt (-Wprio-ctor-dtor): New option.

* c-c++-common/Wprio-ctor-dtor.c: New test.

From-SVN: r264853

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-attribs.c
gcc/c-family/c.opt
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c [new file with mode: 0644]

index 683190161352c6b24315b2d6dcf6a7cb599b5189..f6de4aab25fb58fb51f15046baa6da57c053f844 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-04  Vinay Kumar  <vinay.kumar@blackfigtech.com>
+
+       * doc/invoke.texi (-Wno-prio-ctor-dtor): Document new warning
+       -Wno-prio-ctor-dtor.
+
 2018-10-04  David Malcolm  <dmalcolm@redhat.com>
 
        * Makefile.in (OBJS): Add opt-problem.o.
index f2c1f0988f919e914c138e63d6ea8a3edb24e161..b6ff1f783b32ed8f47ef97a2de7e9bed0148d842 100644 (file)
@@ -1,3 +1,9 @@
+2018-10-04  Vinay Kumar  <vinay.kumar@blackfigtech.com>
+
+       * c-attribs.c (get_priority): Add a warning flag warn_prio_ctor_dtor
+       to generate constructor destructor priority warning.
+       * c.opt (-Wprio-ctor-dtor): New option.
+
 2018-10-01  Jason Merrill  <jason@redhat.com>
 
        * c-lex.c (c_common_has_attribute): Add no_unique_address.
index 5454e09adbcbb6f9a992f6f38f3e2d17c86a0ede..4416b5042f7592762b2850cfed33bbc6509626b9 100644 (file)
@@ -1350,12 +1350,12 @@ get_priority (tree args, bool is_destructor)
   if (pri <= MAX_RESERVED_INIT_PRIORITY)
     {
       if (is_destructor)
-       warning (0,
+       warning (OPT_Wprio_ctor_dtor,
                 "destructor priorities from 0 to %d are reserved "
                 "for the implementation",
                 MAX_RESERVED_INIT_PRIORITY);
       else
-       warning (0,
+       warning (OPT_Wprio_ctor_dtor,
                 "constructor priorities from 0 to %d are reserved "
                 "for the implementation",
                 MAX_RESERVED_INIT_PRIORITY);
index 43d1d27ac00d496af6384a9b2b4cbdfdcf3933d9..54603486ed1bd559b35f32df018395af381d8f23 100644 (file)
@@ -973,6 +973,10 @@ Wpragmas
 C ObjC C++ ObjC++ Var(warn_pragmas) Init(1) Warning
 Warn about misuses of pragmas.
 
+Wprio-ctor-dtor
+C ObjC C++ ObjC++ Var(warn_prio_ctor_dtor) Init(1) Warning
+Warn if constructor or destructors with priorities from 0 to 100 are used.
+
 Wproperty-assign-default
 ObjC ObjC++ Var(warn_property_assign_default) Init(1) Warning
 Warn if a property for an Objective-C object has no assign semantics specified.
index b51a20c0cd621515522fe40d5e34cb2ebb8f79bf..89c2eda58c47225a5997bbdf25788e2f97141f38 100644 (file)
@@ -324,7 +324,8 @@ Objective-C and Objective-C++ Dialects}.
 -Wparentheses  -Wno-pedantic-ms-format @gol
 -Wplacement-new  -Wplacement-new=@var{n} @gol
 -Wpointer-arith  -Wpointer-compare  -Wno-pointer-to-int-cast @gol
--Wno-pragmas  -Wredundant-decls  -Wrestrict  -Wno-return-local-addr @gol
+-Wno-pragmas  -Wno-prio-ctor-dtor -Wredundant-decls @gol
+-Wrestrict  -Wno-return-local-addr @gol
 -Wreturn-type  -Wsequence-point  -Wshadow  -Wno-shadow-ivar @gol
 -Wshadow=global,  -Wshadow=local,  -Wshadow=compatible-local @gol
 -Wshift-overflow  -Wshift-overflow=@var{n} @gol
@@ -5329,6 +5330,16 @@ Do not warn about misuses of pragmas, such as incorrect parameters,
 invalid syntax, or conflicts between pragmas.  See also
 @option{-Wunknown-pragmas}.
 
+@item -Wno-prio-ctor-dtor
+@opindex Wno-prio-ctor-dtor
+@opindex Wprio-ctor-dtor
+Do not warn if a priority from 0 to 100 is used for constructor or destructor.
+The use of constructor and destructor attributes allow you to assign a
+priority to the constructor/destructor to control its order of execution
+before @code{main} is called or after it returns.  The priority values must be
+greater than 100 as the compiler reserves priority values between 0--100 for
+the implementation.
+
 @item -Wstrict-aliasing
 @opindex Wstrict-aliasing
 @opindex Wno-strict-aliasing
index d3eb299132d58657a78a041e990c4e614fcef376..1e0029b1b6d7d8d5eba8ee23ef116052ffb7dd8f 100644 (file)
@@ -1,3 +1,7 @@
+2018-10-04  Vinay Kumar  <vinay.kumar@blackfigtech.com>
+
+       * c-c++-common/Wprio-ctor-dtor.c: New test.
+
 2018-10-04  David Malcolm  <dmalcolm@redhat.com>
 
        * gcc.dg/vect/nodump-vect-opt-info-2.c: New test.
diff --git a/gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c b/gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c
new file mode 100644 (file)
index 0000000..5b08059
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-Wno-prio-ctor-dtor" } */
+
+void construct1 () __attribute__ ((constructor (10)));
+void construct2 () __attribute__ ((constructor (100)));
+void construct2 () __attribute__ ((constructor (101)));
+void destruct1 () __attribute__ ((destructor (1)));
+void destruct2 () __attribute__ ((destructor (02)));
+void destruct2 () __attribute__ ((destructor (102)));