aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinay Kumar <vinay.kumar@blackfigtech.com>2018-10-04 18:23:25 +0000
committerJeff Law <law@gcc.gnu.org>2018-10-04 12:23:25 -0600
commit8cff06522fce85a76296f6d891830a56f1feebc1 (patch)
tree77b5bd8b9e5a9bf1326f8d5f1623e59700365ec8
parentf4ebbd243f887b3c5e01c65ad80a8f64a8261e61 (diff)
downloadgcc-8cff06522fce85a76296f6d891830a56f1feebc1.zip
gcc-8cff06522fce85a76296f6d891830a56f1feebc1.tar.gz
gcc-8cff06522fce85a76296f6d891830a56f1feebc1.tar.bz2
invoke.texi (-Wno-prio-ctor-dtor): Document new warning -Wno-prio-ctor-dtor.
* 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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-attribs.c4
-rw-r--r--gcc/c-family/c.opt4
-rw-r--r--gcc/doc/invoke.texi13
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c9
7 files changed, 42 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6831901..f6de4aa 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index f2c1f09..b6ff1f7 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -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.
diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c
index 5454e09..4416b50 100644
--- a/gcc/c-family/c-attribs.c
+++ b/gcc/c-family/c-attribs.c
@@ -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);
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
index 43d1d27..5460348 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -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.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index b51a20c..89c2eda 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -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
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d3eb299..1e0029b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..5b08059
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c
@@ -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)));