OSDN Git Service

Merge remote-tracking branch 'gnu/gcc-4_7-branch' into rework
[pf3gnuchains/gcc-fork.git] / gcc / ada / warnsw.adb
diff --git a/gcc/ada/warnsw.adb b/gcc/ada/warnsw.adb
new file mode 100644 (file)
index 0000000..8e2b1b6
--- /dev/null
@@ -0,0 +1,474 @@
+------------------------------------------------------------------------------
+--                                                                          --
+--                         GNAT COMPILER COMPONENTS                         --
+--                                                                          --
+--                               W A R N S W                                --
+--                                                                          --
+--                                 B o d y                                  --
+--                                                                          --
+--          Copyright (C) 1999-2012, Free Software Foundation, Inc.         --
+--                                                                          --
+-- GNAT is free software;  you can  redistribute it  and/or modify it under --
+-- terms of the  GNU General Public License as published  by the Free Soft- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
+-- for  more details.  You should have  received  a copy of the GNU General --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
+--                                                                          --
+-- GNAT was originally developed  by the GNAT team at  New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
+--                                                                          --
+------------------------------------------------------------------------------
+
+with Opt; use Opt;
+
+package body Warnsw is
+
+   ----------------------------
+   -- Set_Dot_Warning_Switch --
+   ----------------------------
+
+   function Set_Dot_Warning_Switch (C : Character) return Boolean is
+   begin
+      case C is
+         when 'a' =>
+            Warn_On_Assertion_Failure           := True;
+
+         when 'A' =>
+            Warn_On_Assertion_Failure           := False;
+
+         when 'b' =>
+            Warn_On_Biased_Representation       := True;
+
+         when 'B' =>
+            Warn_On_Biased_Representation       := False;
+
+         when 'c' =>
+            Warn_On_Unrepped_Components         := True;
+
+         when 'C' =>
+            Warn_On_Unrepped_Components         := False;
+
+         when 'e' =>
+            Address_Clause_Overlay_Warnings     := True;
+            Check_Unreferenced                  := True;
+            Check_Unreferenced_Formals          := True;
+            Check_Withs                         := True;
+            Constant_Condition_Warnings         := True;
+            Elab_Warnings                       := True;
+            Implementation_Unit_Warnings        := True;
+            Ineffective_Inline_Warnings         := True;
+            List_Inherited_Aspects              := True;
+            Warn_On_Ada_2005_Compatibility      := True;
+            Warn_On_Ada_2012_Compatibility      := True;
+            Warn_On_All_Unread_Out_Parameters   := True;
+            Warn_On_Assertion_Failure           := True;
+            Warn_On_Assumed_Low_Bound           := True;
+            Warn_On_Atomic_Synchronization      := True;
+            Warn_On_Bad_Fixed_Value             := True;
+            Warn_On_Biased_Representation       := True;
+            Warn_On_Constant                    := True;
+            Warn_On_Deleted_Code                := True;
+            Warn_On_Dereference                 := True;
+            Warn_On_Export_Import               := True;
+            Warn_On_Hiding                      := True;
+            Warn_On_Modified_Unread             := True;
+            Warn_On_No_Value_Assigned           := True;
+            Warn_On_Non_Local_Exception         := True;
+            Warn_On_Object_Renames_Function     := True;
+            Warn_On_Obsolescent_Feature         := True;
+            Warn_On_Overlap                     := True;
+            Warn_On_Overridden_Size             := True;
+            Warn_On_Parameter_Order             := True;
+            Warn_On_Questionable_Missing_Parens := True;
+            Warn_On_Record_Holes                := True;
+            Warn_On_Redundant_Constructs        := True;
+            Warn_On_Reverse_Bit_Order           := True;
+            Warn_On_Suspicious_Contract         := True;
+            Warn_On_Unchecked_Conversion        := True;
+            Warn_On_Unordered_Enumeration_Type  := True;
+            Warn_On_Unrecognized_Pragma         := True;
+            Warn_On_Unrepped_Components         := True;
+            Warn_On_Warnings_Off                := True;
+
+         when 'g' =>
+            Set_GNAT_Mode_Warnings;
+
+         when 'h' =>
+            Warn_On_Record_Holes                := True;
+
+         when 'H' =>
+            Warn_On_Record_Holes                := False;
+
+         when 'i' =>
+            Warn_On_Overlap                     := True;
+
+         when 'I' =>
+            Warn_On_Overlap                     := False;
+
+         when 'l' =>
+            List_Inherited_Aspects              := True;
+
+         when 'L' =>
+            List_Inherited_Aspects              := False;
+
+         when 'm' =>
+            Warn_On_Suspicious_Modulus_Value    := True;
+
+         when 'M' =>
+            Warn_On_Suspicious_Modulus_Value    := False;
+
+         when 'n' =>
+            Warn_On_Atomic_Synchronization      := True;
+
+         when 'N' =>
+            Warn_On_Atomic_Synchronization      := False;
+
+         when 'o' =>
+            Warn_On_All_Unread_Out_Parameters   := True;
+
+         when 'O' =>
+            Warn_On_All_Unread_Out_Parameters   := False;
+
+         when 'p' =>
+            Warn_On_Parameter_Order             := True;
+
+         when 'P' =>
+            Warn_On_Parameter_Order             := False;
+
+         when 'r' =>
+            Warn_On_Object_Renames_Function     := True;
+
+         when 'R' =>
+            Warn_On_Object_Renames_Function     := False;
+
+         when 's' =>
+            Warn_On_Overridden_Size             := True;
+
+         when 'S' =>
+            Warn_On_Overridden_Size             := False;
+
+         when 't' =>
+            Warn_On_Suspicious_Contract         := True;
+
+         when 'T' =>
+            Warn_On_Suspicious_Contract         := False;
+
+         when 'u' =>
+            Warn_On_Unordered_Enumeration_Type  := True;
+
+         when 'U' =>
+            Warn_On_Unordered_Enumeration_Type  := False;
+
+         when 'v' =>
+            Warn_On_Reverse_Bit_Order           := True;
+
+         when 'V' =>
+            Warn_On_Reverse_Bit_Order           := False;
+
+         when 'w' =>
+            Warn_On_Warnings_Off                := True;
+
+         when 'W' =>
+            Warn_On_Warnings_Off                := False;
+
+         when 'x' =>
+            Warn_On_Non_Local_Exception         := True;
+
+         when 'X' =>
+            Warn_On_Non_Local_Exception         := False;
+            No_Warn_On_Non_Local_Exception      := True;
+
+         when others =>
+            return False;
+      end case;
+
+      return True;
+   end Set_Dot_Warning_Switch;
+
+   ----------------------------
+   -- Set_GNAT_Mode_Warnings --
+   ----------------------------
+
+   procedure Set_GNAT_Mode_Warnings is
+   begin
+      Address_Clause_Overlay_Warnings     := True;
+      Check_Unreferenced                  := True;
+      Check_Unreferenced_Formals          := True;
+      Check_Withs                         := True;
+      Constant_Condition_Warnings         := True;
+      Elab_Warnings                       := False;
+      Implementation_Unit_Warnings        := False;
+      Ineffective_Inline_Warnings         := True;
+      List_Inherited_Aspects              := False;
+      Warn_On_Ada_2005_Compatibility      := True;
+      Warn_On_Ada_2012_Compatibility      := True;
+      Warn_On_All_Unread_Out_Parameters   := False;
+      Warn_On_Assertion_Failure           := True;
+      Warn_On_Assumed_Low_Bound           := True;
+      Warn_On_Atomic_Synchronization      := False;
+      Warn_On_Bad_Fixed_Value             := True;
+      Warn_On_Biased_Representation       := True;
+      Warn_On_Constant                    := True;
+      Warn_On_Deleted_Code                := False;
+      Warn_On_Dereference                 := False;
+      Warn_On_Export_Import               := True;
+      Warn_On_Hiding                      := False;
+      Warn_On_Modified_Unread             := True;
+      Warn_On_No_Value_Assigned           := True;
+      Warn_On_Non_Local_Exception         := False;
+      Warn_On_Object_Renames_Function     := True;
+      Warn_On_Obsolescent_Feature         := True;
+      Warn_On_Overlap                     := True;
+      Warn_On_Overridden_Size             := True;
+      Warn_On_Parameter_Order             := True;
+      Warn_On_Questionable_Missing_Parens := True;
+      Warn_On_Record_Holes                := False;
+      Warn_On_Redundant_Constructs        := True;
+      Warn_On_Reverse_Bit_Order           := False;
+      Warn_On_Suspicious_Contract         := True;
+      Warn_On_Unchecked_Conversion        := True;
+      Warn_On_Unordered_Enumeration_Type  := False;
+      Warn_On_Unrecognized_Pragma         := True;
+      Warn_On_Unrepped_Components         := False;
+      Warn_On_Warnings_Off                := False;
+   end Set_GNAT_Mode_Warnings;
+
+   ------------------------
+   -- Set_Warning_Switch --
+   ------------------------
+
+   function Set_Warning_Switch (C : Character) return Boolean is
+   begin
+      case C is
+         when 'a' =>
+            Check_Unreferenced                  := True;
+            Check_Unreferenced_Formals          := True;
+            Check_Withs                         := True;
+            Constant_Condition_Warnings         := True;
+            Implementation_Unit_Warnings        := True;
+            Ineffective_Inline_Warnings         := True;
+            Warn_On_Ada_2005_Compatibility      := True;
+            Warn_On_Ada_2012_Compatibility      := True;
+            Warn_On_Assertion_Failure           := True;
+            Warn_On_Assumed_Low_Bound           := True;
+            Warn_On_Bad_Fixed_Value             := True;
+            Warn_On_Biased_Representation       := True;
+            Warn_On_Constant                    := True;
+            Warn_On_Export_Import               := True;
+            Warn_On_Modified_Unread             := True;
+            Warn_On_No_Value_Assigned           := True;
+            Warn_On_Non_Local_Exception         := True;
+            Warn_On_Object_Renames_Function     := True;
+            Warn_On_Obsolescent_Feature         := True;
+            Warn_On_Parameter_Order             := True;
+            Warn_On_Questionable_Missing_Parens := True;
+            Warn_On_Redundant_Constructs        := True;
+            Warn_On_Reverse_Bit_Order           := True;
+            Warn_On_Suspicious_Contract         := True;
+            Warn_On_Unchecked_Conversion        := True;
+            Warn_On_Unrecognized_Pragma         := True;
+            Warn_On_Unrepped_Components         := True;
+
+         when 'A' =>
+            Address_Clause_Overlay_Warnings     := False;
+            Check_Unreferenced                  := False;
+            Check_Unreferenced_Formals          := False;
+            Check_Withs                         := False;
+            Constant_Condition_Warnings         := False;
+            Elab_Warnings                       := False;
+            Implementation_Unit_Warnings        := False;
+            Ineffective_Inline_Warnings         := False;
+            List_Inherited_Aspects              := False;
+            Warn_On_Ada_2005_Compatibility      := False;
+            Warn_On_Ada_2012_Compatibility      := False;
+            Warn_On_All_Unread_Out_Parameters   := False;
+            Warn_On_Assertion_Failure           := False;
+            Warn_On_Assumed_Low_Bound           := False;
+            Warn_On_Bad_Fixed_Value             := False;
+            Warn_On_Biased_Representation       := False;
+            Warn_On_Constant                    := False;
+            Warn_On_Deleted_Code                := False;
+            Warn_On_Dereference                 := False;
+            Warn_On_Export_Import               := False;
+            Warn_On_Hiding                      := False;
+            Warn_On_Modified_Unread             := False;
+            Warn_On_No_Value_Assigned           := False;
+            Warn_On_Non_Local_Exception         := False;
+            Warn_On_Object_Renames_Function     := False;
+            Warn_On_Obsolescent_Feature         := False;
+            Warn_On_Overlap                     := False;
+            Warn_On_Overridden_Size             := False;
+            Warn_On_Parameter_Order             := False;
+            Warn_On_Record_Holes                := False;
+            Warn_On_Questionable_Missing_Parens := False;
+            Warn_On_Redundant_Constructs        := False;
+            Warn_On_Reverse_Bit_Order           := False;
+            Warn_On_Suspicious_Contract         := False;
+            Warn_On_Suspicious_Modulus_Value    := False;
+            Warn_On_Unchecked_Conversion        := False;
+            Warn_On_Unordered_Enumeration_Type  := False;
+            Warn_On_Unrecognized_Pragma         := False;
+            Warn_On_Unrepped_Components         := False;
+            Warn_On_Warnings_Off                := False;
+
+            No_Warn_On_Non_Local_Exception      := True;
+
+         when 'b' =>
+            Warn_On_Bad_Fixed_Value             := True;
+
+         when 'B' =>
+            Warn_On_Bad_Fixed_Value             := False;
+
+         when 'c' =>
+            Constant_Condition_Warnings         := True;
+
+         when 'C' =>
+            Constant_Condition_Warnings         := False;
+
+         when 'd' =>
+            Warn_On_Dereference                 := True;
+
+         when 'D' =>
+            Warn_On_Dereference                 := False;
+
+         when 'e' =>
+            Warning_Mode                        := Treat_As_Error;
+
+         when 'f' =>
+            Check_Unreferenced_Formals          := True;
+
+         when 'F' =>
+            Check_Unreferenced_Formals          := False;
+
+         when 'g' =>
+            Warn_On_Unrecognized_Pragma         := True;
+
+         when 'G' =>
+            Warn_On_Unrecognized_Pragma         := False;
+
+         when 'h' =>
+            Warn_On_Hiding                      := True;
+
+         when 'H' =>
+            Warn_On_Hiding                      := False;
+
+         when 'i' =>
+            Implementation_Unit_Warnings        := True;
+
+         when 'I' =>
+            Implementation_Unit_Warnings        := False;
+
+         when 'j' =>
+            Warn_On_Obsolescent_Feature         := True;
+
+         when 'J' =>
+            Warn_On_Obsolescent_Feature         := False;
+
+         when 'k' =>
+            Warn_On_Constant                    := True;
+
+         when 'K' =>
+            Warn_On_Constant                    := False;
+
+         when 'l' =>
+            Elab_Warnings                       := True;
+
+         when 'L' =>
+            Elab_Warnings                       := False;
+
+         when 'm' =>
+            Warn_On_Modified_Unread             := True;
+
+         when 'M' =>
+            Warn_On_Modified_Unread             := False;
+
+         when 'n' =>
+            Warning_Mode                        := Normal;
+
+         when 'o' =>
+            Address_Clause_Overlay_Warnings     := True;
+
+         when 'O' =>
+            Address_Clause_Overlay_Warnings     := False;
+
+         when 'p' =>
+            Ineffective_Inline_Warnings         := True;
+
+         when 'P' =>
+            Ineffective_Inline_Warnings         := False;
+
+         when 'q' =>
+            Warn_On_Questionable_Missing_Parens := True;
+
+         when 'Q' =>
+            Warn_On_Questionable_Missing_Parens := False;
+
+         when 'r' =>
+            Warn_On_Redundant_Constructs        := True;
+
+         when 'R' =>
+            Warn_On_Redundant_Constructs        := False;
+
+         when 's' =>
+            Warning_Mode                        := Suppress;
+
+         when 't' =>
+            Warn_On_Deleted_Code                := True;
+
+         when 'T' =>
+            Warn_On_Deleted_Code                := False;
+
+         when 'u' =>
+            Check_Unreferenced                  := True;
+            Check_Withs                         := True;
+            Check_Unreferenced_Formals          := True;
+
+         when 'U' =>
+            Check_Unreferenced                  := False;
+            Check_Withs                         := False;
+            Check_Unreferenced_Formals          := False;
+
+         when 'v' =>
+            Warn_On_No_Value_Assigned           := True;
+
+         when 'V' =>
+            Warn_On_No_Value_Assigned           := False;
+
+         when 'w' =>
+            Warn_On_Assumed_Low_Bound           := True;
+
+         when 'W' =>
+            Warn_On_Assumed_Low_Bound           := False;
+
+         when 'x' =>
+            Warn_On_Export_Import               := True;
+
+         when 'X' =>
+            Warn_On_Export_Import               := False;
+
+         when 'y' =>
+            Warn_On_Ada_2005_Compatibility      := True;
+            Warn_On_Ada_2012_Compatibility      := True;
+
+         when 'Y' =>
+            Warn_On_Ada_2005_Compatibility      := False;
+            Warn_On_Ada_2012_Compatibility      := False;
+
+         when 'z' =>
+            Warn_On_Unchecked_Conversion        := True;
+
+         when 'Z' =>
+            Warn_On_Unchecked_Conversion        := False;
+
+         when others =>
+            return False;
+      end case;
+
+      return True;
+   end Set_Warning_Switch;
+
+end Warnsw;