diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f7fb162..805fe45 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-30  Vinay Kumar  <vinay.kumar@blackfigtech.com>
+
+	* doc/invoke.texi (-Wreturn-type): Document new warning
+	-Wprio-ctor-dtor.
+
 2018-08-30  Tamar Christina  <tamar.christina@arm.com>
 
 	* config/aarch64/aarch64.c (aarch64_expand_movmem): Set TImode max.
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 5440b25..6909c8e 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2018-08-30  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-08-27  David Malcolm  <dmalcolm@redhat.com>
 
 	PR 87091
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 31a2b97..da3fa87 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -493,6 +493,10 @@ Wdiv-by-zero
 C ObjC C++ ObjC++ Var(warn_div_by_zero) Init(1) Warning
 Warn about compile-time integer division by zero.
 
+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.
+
 Wduplicated-branches
 C ObjC C++ ObjC++ Var(warn_duplicated_branches) Init(0) Warning
 Warn about duplicated branches in if-else statements.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 089f844..e413cbb 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -294,7 +294,7 @@ Objective-C and Objective-C++ Dialects}.
 -Wdisabled-optimization @gol
 -Wno-discarded-qualifiers  -Wno-discarded-array-qualifiers @gol
 -Wno-div-by-zero  -Wdouble-promotion @gol
--Wduplicated-branches  -Wduplicated-cond @gol
+-Wprio-ctor-dtor  -Wduplicated-branches  -Wduplicated-cond @gol
 -Wempty-body  -Wenum-compare  -Wno-endif-labels  -Wexpansion-to-defined @gol
 -Werror  -Werror=*  -Wextra-semi  -Wfatal-errors @gol
 -Wfloat-equal  -Wformat  -Wformat=2 @gol
@@ -5794,6 +5794,18 @@ Incrementing a boolean is invalid in C++17, and deprecated otherwise.)
 
 This warning is enabled by @option{-Wall}.
 
+@item -Wprio-ctor-dtor
+@opindex Wno-prio-ctor-dtor
+@opindex Wprio-ctor-dtor
+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 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.
+
+This warning is enabled by @option{-Wall}.
+
 @item -Wduplicated-branches
 @opindex Wno-duplicated-branches
 @opindex Wduplicated-branches
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fd78dcf..4eaf6c7 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-08-30  Vinay Kumar  <vinay.kumar@blackfigtech.com>
+
+	* c-c++-common/Wprio-ctor-dtor.c: New test.
+	* g++.dg/warn/Wprio-ctor-dtor.C: New test.
+
 2018-08-30  Tamar Christina  <tamar.christina@arm.com>
 
  	* gcc.target/aarch64/large_struct_copy_2.c: New.
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)));
diff --git a/gcc/testsuite/g++.dg/warn/Wprio-ctor-dtor.C b/gcc/testsuite/g++.dg/warn/Wprio-ctor-dtor.C
new file mode 100644
index 0000000..5b08059
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/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)));
