diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-01-06 12:06:24 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-01-06 12:06:24 +0100 |
commit | e11b776b63c214d3e0792fa49ca2153df64d11d9 (patch) | |
tree | a248ffec6c718d983b67ac49dc29fbd18854a775 /gcc | |
parent | 6eca51ce090586d67fe01897c848bb224142549f (diff) | |
download | gcc-e11b776b63c214d3e0792fa49ca2153df64d11d9.zip gcc-e11b776b63c214d3e0792fa49ca2153df64d11d9.tar.gz gcc-e11b776b63c214d3e0792fa49ca2153df64d11d9.tar.bz2 |
[multiple changes]
2017-01-06 Ed Schonberg <schonberg@adacore.com>
* sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an
iterator specification with a serious syntactic error, transform
construct into an infinite loop in order to continue analysis
and prevent a compiler abort.
2017-01-06 Tristan Gingold <gingold@adacore.com>
* exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate
max_queue_lengths_array if unused.
2017-01-06 Bob Duff <duff@adacore.com>
* errout.adb (Set_Msg_Text): Protect against out-of-bounds
array access, in case "\" is at the end of Text.
* stylesw.adb (Set_Style_Check_Options): Don't include input
characters in the error message template, because they could
be control characters such as "\", which Errout will try to
interpret.
2017-01-06 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations):
For a private type examine the visible declarations that follow
the partial view, not just the private declarations that follow
the full view.
2017-01-06 Hristian Kirtchev <kirtchev@adacore.com>
* exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and
code cleanup.
From-SVN: r244133
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 33 | ||||
-rw-r--r-- | gcc/ada/checks.adb | 6 | ||||
-rw-r--r-- | gcc/ada/errout.adb | 2 | ||||
-rw-r--r-- | gcc/ada/exp_ch5.adb | 7 | ||||
-rw-r--r-- | gcc/ada/exp_ch9.adb | 5 | ||||
-rw-r--r-- | gcc/ada/sem_ch3.adb | 5 | ||||
-rw-r--r-- | gcc/ada/sem_ch4.adb | 11 | ||||
-rw-r--r-- | gcc/ada/sem_ch5.adb | 13 | ||||
-rw-r--r-- | gcc/ada/stylesw.adb | 6 |
9 files changed, 74 insertions, 14 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index e5f4d17..ac0d8b2 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5 +1,38 @@ 2017-01-06 Ed Schonberg <schonberg@adacore.com> + * sem_ch5.adb (Analyze_Loop_Statement): If the loop includes an + iterator specification with a serious syntactic error, transform + construct into an infinite loop in order to continue analysis + and prevent a compiler abort. + +2017-01-06 Tristan Gingold <gingold@adacore.com> + + * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Do not generate + max_queue_lengths_array if unused. + +2017-01-06 Bob Duff <duff@adacore.com> + + * errout.adb (Set_Msg_Text): Protect against out-of-bounds + array access, in case "\" is at the end of Text. + * stylesw.adb (Set_Style_Check_Options): Don't include input + characters in the error message template, because they could + be control characters such as "\", which Errout will try to + interpret. + +2017-01-06 Ed Schonberg <schonberg@adacore.com> + + * sem_ch4.adb (Find_Indexing_Operations, Inspect_Declarations): + For a private type examine the visible declarations that follow + the partial view, not just the private declarations that follow + the full view. + +2017-01-06 Hristian Kirtchev <kirtchev@adacore.com> + + * exp_ch5.adb, sem_ch3.adb, checks.adb: Minor reformatting and + code cleanup. + +2017-01-06 Ed Schonberg <schonberg@adacore.com> + * exp_ch5.adb (Get_Default_Iterator): For a derived type, the alias of the inherited op is the parent iterator, no need to examine dispatch table positions which might not be established diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb index 83703b6..efb3684 100644 --- a/gcc/ada/checks.adb +++ b/gcc/ada/checks.adb @@ -2638,14 +2638,14 @@ package body Checks is elsif Present (S) and then S = Predicate_Function (Typ) then Error_Msg_NE - ("predicate check includes a call to& that " - & "requires a predicate check??", Parent (N), Fun); + ("predicate check includes a call to& that requires a " + & "predicate check??", Parent (N), Fun); Error_Msg_N ("\this will result in infinite recursion??", Parent (N)); if Is_First_Subtype (Typ) then Error_Msg_NE - ("\use an explicit subtype of& to carry the predicate", + ("\use an explicit subtype of& to carry the predicate", Parent (N), Typ); end if; diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb index 09e8e59..49aa2a7 100644 --- a/gcc/ada/errout.adb +++ b/gcc/ada/errout.adb @@ -2992,7 +2992,7 @@ package body Errout is when '\' => Continuation := True; - if Text (P) = '\' then + if P <= Text'Last and then Text (P) = '\' then Continuation_New_Line := True; P := P + 1; end if; diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb index ac7699d..dff953b 100644 --- a/gcc/ada/exp_ch5.adb +++ b/gcc/ada/exp_ch5.adb @@ -3777,9 +3777,10 @@ package body Exp_Ch5 is Op := Node (Prim); if Alias (Op) = Iter - or else (Chars (Op) = Chars (Iter) - and then Present (DTC_Entity (Op)) - and then DT_Position (Op) = DT_Position (Iter)) + or else + (Chars (Op) = Chars (Iter) + and then Present (DTC_Entity (Op)) + and then DT_Position (Op) = DT_Position (Iter)) then return Op; end if; diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb index a7dd4db..b2e821c 100644 --- a/gcc/ada/exp_ch9.adb +++ b/gcc/ada/exp_ch9.adb @@ -9767,7 +9767,10 @@ package body Exp_Ch9 is -- type. This object is later passed to the appropriate protected object -- initialization routine. - if Has_Entries (Prot_Typ) then + if Has_Entries (Prot_Typ) + and then Corresponding_Runtime_Package (Prot_Typ) = + System_Tasking_Protected_Objects_Entries + then declare Count : Int; Item : Entity_Id; diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index d00a31c..92d3003 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -11960,7 +11960,7 @@ package body Sem_Ch3 is if (No (Item) or else Nkind (Item) /= N_Aspect_Specification or else Entity (Item) = Full_Base) - and then Present (First_Rep_Item (Priv)) + and then Present (First_Rep_Item (Priv)) then Set_First_Rep_Item (Full, Priv_Item); @@ -14182,7 +14182,8 @@ package body Sem_Ch3 is Governed_By => Assoc_List, Into => Comp_List, Report_Errors => Errors); - pragma Assert (not Errors); + pragma Assert (not Errors + or else Serious_Errors_Detected > 0); Create_All_Components; diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 9060fb1..253a12d 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -7798,7 +7798,16 @@ package body Sem_Ch4 is Ref := Empty; Typ := Underlying_Type (Base_Type (Typ)); - Inspect_Primitives (Typ, Ref); + Inspect_Primitives (Typ, Ref); + + -- Now look for explicit declarations of an indexing operation. + -- If the type is private the operation may be declared in the + -- visible part that contains the partial view. + + if Is_Private_Type (T) then + Inspect_Declarations (T, Ref); + end if; + Inspect_Declarations (Typ, Ref); return Ref; diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index 5897454..fefdbc3 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -3273,6 +3273,19 @@ package body Sem_Ch5 is Set_Has_Created_Identifier (N); end if; + -- If the iterator specification has a syntactic error, transform + -- construct into an infinite loop to prevent a crash and perform + -- some analysis. + + if Present (Iter) + and then Present (Iterator_Specification (Iter)) + and then Error_Posted (Iterator_Specification (Iter)) + then + Set_Iteration_Scheme (N, Empty); + Analyze (N); + return; + end if; + -- Iteration over a container in Ada 2012 involves the creation of a -- controlled iterator object. Wrap the loop in a block to ensure the -- timely finalization of the iterator and release of container locks. diff --git a/gcc/ada/stylesw.adb b/gcc/ada/stylesw.adb index a708da9..8ff3ce6 100644 --- a/gcc/ada/stylesw.adb +++ b/gcc/ada/stylesw.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2016, 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- -- @@ -471,7 +471,7 @@ package body Stylesw is Write_Line ("unrecognized switch -gnaty" & C & " ignored"); else Err_Col := Err_Col - 1; - Bad_Style_Switch ("invalid style switch: " & C); + Bad_Style_Switch ("invalid style switch"); return; end if; end case; @@ -580,7 +580,7 @@ package body Stylesw is Write_Line ("unrecognized switch -gnaty-" & C & " ignored"); else Err_Col := Err_Col - 1; - Bad_Style_Switch ("invalid style switch: " & C); + Bad_Style_Switch ("invalid style switch"); return; end if; end case; |