diff options
author | Vinay Kumar <vinay.kumar@blackfigtech.com> | 2018-10-04 18:23:25 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2018-10-04 12:23:25 -0600 |
commit | 8cff06522fce85a76296f6d891830a56f1feebc1 (patch) | |
tree | 77b5bd8b9e5a9bf1326f8d5f1623e59700365ec8 | |
parent | f4ebbd243f887b3c5e01c65ad80a8f64a8261e61 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-attribs.c | 4 | ||||
-rw-r--r-- | gcc/c-family/c.opt | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 13 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/Wprio-ctor-dtor.c | 9 |
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))); |