From: Arnaud Charlet Date: Fri, 8 Oct 2010 13:02:55 +0000 (+0200) Subject: [multiple changes] X-Git-Tag: releases/gcc-4.6.0~3736 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=af31bffbb0630674cfc3cacb2fb21aa6bfd1fb26;p=thirdparty%2Fgcc.git [multiple changes] 2010-10-08 Robert Dewar * sem_prag.adb (Check_Duplicate_Pragma): New procedure Add calls to this new procedure where appropriate 2010-10-08 Vincent Celier * a-textio.adb (Get_Chunk): Code clean up. 2010-10-08 Robert Dewar * a-strbou.ads, a-strfix.adb, a-strfix.ads, a-strsea.adb, a-strsea.ads, a-strsup.adb, a-strsup.ads, a-strunb-shared.adb, a-strunb-shared.ads, a-strunb.adb, a-strunb.ads, a-stwibo.ads, a-stwifi.adb, a-stwifi.ads, a-stwise.adb, a-stwise.ads, a-stwisu.adb, a-stwisu.ads, a-stwiun-shared.adb, a-stwiun-shared.ads, a-stwiun.adb, a-stwiun.ads, a-stzbou.ads, a-stzfix.adb, a-stzfix.ads, a-stzsea.adb, a-stzsea.ads, a-stzsup.adb, a-stzsup.ads, a-stzunb-shared.adb, a-stzunb-shared.ads, a-stzunb.adb, a-stzunb.ads (Find_Token): New version with From parameter. From-SVN: r165174 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b47253fa4a30..68b248fab517 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,24 @@ +2010-10-08 Robert Dewar + + * sem_prag.adb (Check_Duplicate_Pragma): New procedure + Add calls to this new procedure where appropriate + +2010-10-08 Vincent Celier + + * a-textio.adb (Get_Chunk): Code clean up. + +2010-10-08 Robert Dewar + + * a-strbou.ads, a-strfix.adb, a-strfix.ads, a-strsea.adb, a-strsea.ads, + a-strsup.adb, a-strsup.ads, a-strunb-shared.adb, a-strunb-shared.ads, + a-strunb.adb, a-strunb.ads, a-stwibo.ads, a-stwifi.adb, a-stwifi.ads, + a-stwise.adb, a-stwise.ads, a-stwisu.adb, a-stwisu.ads, + a-stwiun-shared.adb, a-stwiun-shared.ads, a-stwiun.adb, a-stwiun.ads, + a-stzbou.ads, a-stzfix.adb, a-stzfix.ads, a-stzsea.adb, a-stzsea.ads, + a-stzsup.adb, a-stzsup.ads, a-stzunb-shared.adb, a-stzunb-shared.ads, + a-stzunb.adb, a-stzunb.ads (Find_Token): New version with From + parameter. + 2010-10-08 Robert Dewar * sem_cat.adb (Check_Categorization_Dependencies): Remote types diff --git a/gcc/ada/a-strbou.ads b/gcc/ada/a-strbou.ads index 3d9276399fc4..ddc8c337683d 100644 --- a/gcc/ada/a-strbou.ads +++ b/gcc/ada/a-strbou.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -289,6 +289,15 @@ package Ada.Strings.Bounded is (Source : Bounded_String; Set : Maps.Character_Set) return Natural; + procedure Find_Token + (Source : Bounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Bounded_String; Set : Maps.Character_Set; @@ -746,6 +755,15 @@ package Ada.Strings.Bounded is Set : Maps.Character_Set) return Natural renames Super_Count; + procedure Find_Token + (Source : Bounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + renames Super_Find_Token; + procedure Find_Token (Source : Bounded_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strfix.adb b/gcc/ada/a-strfix.adb index 5e5118ace31a..6bb0229c71ef 100644 --- a/gcc/ada/a-strfix.adb +++ b/gcc/ada/a-strfix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -120,6 +120,15 @@ package body Ada.Strings.Fixed is Set : Maps.Character_Set) return Natural renames Ada.Strings.Search.Count; + procedure Find_Token + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + renames Ada.Strings.Search.Find_Token; + procedure Find_Token (Source : String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strfix.ads b/gcc/ada/a-strfix.ads index 875219a1c9bd..56db8bc9458b 100644 --- a/gcc/ada/a-strfix.ads +++ b/gcc/ada/a-strfix.ads @@ -99,6 +99,15 @@ package Ada.Strings.Fixed is (Source : String; Set : Maps.Character_Set) return Natural; + procedure Find_Token + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strsea.adb b/gcc/ada/a-strsea.adb index 848c0630710e..6f458ff23957 100644 --- a/gcc/ada/a-strsea.adb +++ b/gcc/ada/a-strsea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -194,6 +194,40 @@ package body Ada.Strings.Search is -- Find_Token -- ---------------- + procedure Find_Token + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + is + begin + for J in From .. Source'Last loop + if Belongs (Source (J), Set, Test) then + First := J; + + for K in J + 1 .. Source'Last loop + if not Belongs (Source (K), Set, Test) then + Last := K - 1; + return; + end if; + end loop; + + -- Here if J indexes first char of token, and all chars after J + -- are in the token. + + Last := Source'Last; + return; + end if; + end loop; + + -- Here if no token found + + First := From; + Last := 0; + end Find_Token; + procedure Find_Token (Source : String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strsea.ads b/gcc/ada/a-strsea.ads index 153b8e61d787..bf8686815c02 100644 --- a/gcc/ada/a-strsea.ads +++ b/gcc/ada/a-strsea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -103,6 +103,14 @@ private package Ada.Strings.Search is (Source : String; Set : Maps.Character_Set) return Natural; + procedure Find_Token + (Source : String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + procedure Find_Token (Source : String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strsup.adb b/gcc/ada/a-strsup.adb index 75fa3bfd23e3..707d9ec7055b 100644 --- a/gcc/ada/a-strsup.adb +++ b/gcc/ada/a-strsup.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2010, 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- -- @@ -792,6 +792,19 @@ package body Ada.Strings.Superbounded is -- Super_Find_Token -- ---------------------- + procedure Super_Find_Token + (Source : Super_String; + Set : Maps.Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + begin + Search.Find_Token + (Source.Data (From .. Source.Current_Length), Set, Test, First, Last); + end Super_Find_Token; + procedure Super_Find_Token (Source : Super_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strsup.ads b/gcc/ada/a-strsup.ads index 3fbdc0217038..c88c563d3d61 100644 --- a/gcc/ada/a-strsup.ads +++ b/gcc/ada/a-strsup.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2010, 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- -- @@ -290,6 +290,14 @@ package Ada.Strings.Superbounded is (Source : Super_String; Set : Maps.Character_Set) return Natural; + procedure Super_Find_Token + (Source : Super_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + procedure Super_Find_Token (Source : Super_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strunb-shared.adb b/gcc/ada/a-strunb-shared.adb index f4083b59e935..2b497b88dcb1 100644 --- a/gcc/ada/a-strunb-shared.adb +++ b/gcc/ada/a-strunb-shared.adb @@ -816,6 +816,19 @@ package body Ada.Strings.Unbounded is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Unbounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + SR : constant Shared_String_Access := Source.Reference; + begin + Search.Find_Token (SR.Data (From .. SR.Last), Set, Test, First, Last); + end Find_Token; + procedure Find_Token (Source : Unbounded_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strunb-shared.ads b/gcc/ada/a-strunb-shared.ads index cbeae34fd985..f07ac3145904 100644 --- a/gcc/ada/a-strunb-shared.ads +++ b/gcc/ada/a-strunb-shared.ads @@ -294,6 +294,15 @@ package Ada.Strings.Unbounded is (Source : Unbounded_String; Set : Maps.Character_Set) return Natural; + procedure Find_Token + (Source : Unbounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Unbounded_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strunb.adb b/gcc/ada/a-strunb.adb index cc5b92bfc435..eae34bee885b 100644 --- a/gcc/ada/a-strunb.adb +++ b/gcc/ada/a-strunb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -504,6 +504,19 @@ package body Ada.Strings.Unbounded is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Unbounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + begin + Search.Find_Token + (Source.Reference (From .. Source.Last), Set, Test, First, Last); + end Find_Token; + procedure Find_Token (Source : Unbounded_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-strunb.ads b/gcc/ada/a-strunb.ads index e61bae50a5a4..af063f0c9d2d 100644 --- a/gcc/ada/a-strunb.ads +++ b/gcc/ada/a-strunb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -256,6 +256,15 @@ package Ada.Strings.Unbounded is (Source : Unbounded_String; Set : Maps.Character_Set) return Natural; + procedure Find_Token + (Source : Unbounded_String; + Set : Maps.Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Unbounded_String; Set : Maps.Character_Set; diff --git a/gcc/ada/a-stwibo.ads b/gcc/ada/a-stwibo.ads index 469e9cd714b7..c5a54d14b147 100644 --- a/gcc/ada/a-stwibo.ads +++ b/gcc/ada/a-stwibo.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -293,6 +293,15 @@ package Ada.Strings.Wide_Bounded is (Source : Bounded_Wide_String; Set : Wide_Maps.Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Bounded_Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Bounded_Wide_String; Set : Wide_Maps.Wide_Character_Set; @@ -751,6 +760,15 @@ package Ada.Strings.Wide_Bounded is Set : Wide_Maps.Wide_Character_Set) return Natural renames Super_Count; + procedure Find_Token + (Source : Bounded_Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + renames Super_Find_Token; + procedure Find_Token (Source : Bounded_Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwifi.adb b/gcc/ada/a-stwifi.adb index 14fd52f107c8..c4229062424c 100644 --- a/gcc/ada/a-stwifi.adb +++ b/gcc/ada/a-stwifi.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -114,6 +114,15 @@ package body Ada.Strings.Wide_Fixed is Set : Wide_Maps.Wide_Character_Set) return Natural renames Ada.Strings.Wide_Search.Count; + procedure Find_Token + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + renames Ada.Strings.Wide_Search.Find_Token; + procedure Find_Token (Source : Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwifi.ads b/gcc/ada/a-stwifi.ads index 8f3cf399fa8c..75de811cfb32 100644 --- a/gcc/ada/a-stwifi.ads +++ b/gcc/ada/a-stwifi.ads @@ -102,6 +102,15 @@ package Ada.Strings.Wide_Fixed is (Source : Wide_String; Set : Wide_Maps.Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwise.adb b/gcc/ada/a-stwise.adb index 0e22f64bec79..adc8e5f621a5 100644 --- a/gcc/ada/a-stwise.adb +++ b/gcc/ada/a-stwise.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -189,6 +189,40 @@ package body Ada.Strings.Wide_Search is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + is + begin + for J in From .. Source'Last loop + if Belongs (Source (J), Set, Test) then + First := J; + + for K in J + 1 .. Source'Last loop + if not Belongs (Source (K), Set, Test) then + Last := K - 1; + return; + end if; + end loop; + + -- Here if J indexes first char of token, and all chars after J + -- are in the token. + + Last := Source'Last; + return; + end if; + end loop; + + -- Here if no token found + + First := From; + Last := 0; + end Find_Token; + procedure Find_Token (Source : Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwise.ads b/gcc/ada/a-stwise.ads index 1a0931cb5e1c..fa06c5b15024 100644 --- a/gcc/ada/a-stwise.ads +++ b/gcc/ada/a-stwise.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -106,6 +106,15 @@ private package Ada.Strings.Wide_Search is (Source : Wide_String; Set : Wide_Maps.Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwisu.adb b/gcc/ada/a-stwisu.adb index d0212ecced5f..2ffae8146827 100644 --- a/gcc/ada/a-stwisu.adb +++ b/gcc/ada/a-stwisu.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2010, 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- -- @@ -793,6 +793,19 @@ package body Ada.Strings.Wide_Superbounded is -- Super_Find_Token -- ---------------------- + procedure Super_Find_Token + (Source : Super_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + begin + Wide_Search.Find_Token + (Source.Data (From .. Source.Current_Length), Set, Test, First, Last); + end Super_Find_Token; + procedure Super_Find_Token (Source : Super_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwisu.ads b/gcc/ada/a-stwisu.ads index 06fc1b6b8475..0390031f3da5 100644 --- a/gcc/ada/a-stwisu.ads +++ b/gcc/ada/a-stwisu.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2010, 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- -- @@ -296,6 +296,14 @@ package Ada.Strings.Wide_Superbounded is (Source : Super_String; Set : Wide_Maps.Wide_Character_Set) return Natural; + procedure Super_Find_Token + (Source : Super_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + procedure Super_Find_Token (Source : Super_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwiun-shared.adb b/gcc/ada/a-stwiun-shared.adb index 0f61c7130e66..7b99542510e8 100644 --- a/gcc/ada/a-stwiun-shared.adb +++ b/gcc/ada/a-stwiun-shared.adb @@ -820,6 +820,20 @@ package body Ada.Strings.Wide_Unbounded is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Unbounded_Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + SR : constant Shared_Wide_String_Access := Source.Reference; + begin + Wide_Search.Find_Token + (SR.Data (From .. SR.Last), Set, Test, First, Last); + end Find_Token; + procedure Find_Token (Source : Unbounded_Wide_String; Set : Wide_Maps.Wide_Character_Set; @@ -829,7 +843,8 @@ package body Ada.Strings.Wide_Unbounded is is SR : constant Shared_Wide_String_Access := Source.Reference; begin - Wide_Search.Find_Token (SR.Data (1 .. SR.Last), Set, Test, First, Last); + Wide_Search.Find_Token + (SR.Data (1 .. SR.Last), Set, Test, First, Last); end Find_Token; ---------- diff --git a/gcc/ada/a-stwiun-shared.ads b/gcc/ada/a-stwiun-shared.ads index a438258c908c..79cde5042b40 100644 --- a/gcc/ada/a-stwiun-shared.ads +++ b/gcc/ada/a-stwiun-shared.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -270,6 +270,15 @@ package Ada.Strings.Wide_Unbounded is (Source : Unbounded_Wide_String; Set : Wide_Maps.Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Unbounded_Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Unbounded_Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwiun.adb b/gcc/ada/a-stwiun.adb index 6016aaf2abe0..77e427f92971 100644 --- a/gcc/ada/a-stwiun.adb +++ b/gcc/ada/a-stwiun.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -511,6 +511,19 @@ package body Ada.Strings.Wide_Unbounded is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Unbounded_Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + begin + Wide_Search.Find_Token + (Source.Reference (From .. Source.Last), Set, Test, First, Last); + end Find_Token; + procedure Find_Token (Source : Unbounded_Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stwiun.ads b/gcc/ada/a-stwiun.ads index fc75be4278de..dcec88977e35 100644 --- a/gcc/ada/a-stwiun.ads +++ b/gcc/ada/a-stwiun.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -261,6 +261,15 @@ package Ada.Strings.Wide_Unbounded is (Source : Unbounded_Wide_String; Set : Wide_Maps.Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Unbounded_Wide_String; + Set : Wide_Maps.Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Unbounded_Wide_String; Set : Wide_Maps.Wide_Character_Set; diff --git a/gcc/ada/a-stzbou.ads b/gcc/ada/a-stzbou.ads index cc7049160fbf..9574802f255f 100644 --- a/gcc/ada/a-stzbou.ads +++ b/gcc/ada/a-stzbou.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -299,6 +299,15 @@ package Ada.Strings.Wide_Wide_Bounded is (Source : Bounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Bounded_Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Bounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; @@ -766,6 +775,15 @@ package Ada.Strings.Wide_Wide_Bounded is Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural renames Super_Count; + procedure Find_Token + (Source : Bounded_Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + renames Super_Find_Token; + procedure Find_Token (Source : Bounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzfix.adb b/gcc/ada/a-stzfix.adb index 9cbdf4af4730..077a65c0ecd7 100644 --- a/gcc/ada/a-stzfix.adb +++ b/gcc/ada/a-stzfix.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -120,6 +120,15 @@ package body Ada.Strings.Wide_Wide_Fixed is Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural renames Ada.Strings.Wide_Wide_Search.Count; + procedure Find_Token + (Source : Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + renames Ada.Strings.Wide_Wide_Search.Find_Token; + procedure Find_Token (Source : Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzfix.ads b/gcc/ada/a-stzfix.ads index f6b313598d66..bee76582527b 100644 --- a/gcc/ada/a-stzfix.ads +++ b/gcc/ada/a-stzfix.ads @@ -107,6 +107,15 @@ package Ada.Strings.Wide_Wide_Fixed is (Source : Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzsea.adb b/gcc/ada/a-stzsea.adb index 0dc6d9bbf5c5..e745091f6bae 100644 --- a/gcc/ada/a-stzsea.adb +++ b/gcc/ada/a-stzsea.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -191,6 +191,40 @@ package body Ada.Strings.Wide_Wide_Search is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural) + is + begin + for J in From .. Source'Last loop + if Belongs (Source (J), Set, Test) then + First := J; + + for K in J + 1 .. Source'Last loop + if not Belongs (Source (K), Set, Test) then + Last := K - 1; + return; + end if; + end loop; + + -- Here if J indexes first char of token, and all chars after J + -- are in the token. + + Last := Source'Last; + return; + end if; + end loop; + + -- Here if no token found + + First := From; + Last := 0; + end Find_Token; + procedure Find_Token (Source : Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzsea.ads b/gcc/ada/a-stzsea.ads index 0264bf13575d..b8e39d25a4e0 100644 --- a/gcc/ada/a-stzsea.ads +++ b/gcc/ada/a-stzsea.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -112,6 +112,14 @@ private package Ada.Strings.Wide_Wide_Search is (Source : Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + procedure Find_Token (Source : Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzsup.adb b/gcc/ada/a-stzsup.adb index 7eca54d3cfa5..efad7b0f8c7d 100644 --- a/gcc/ada/a-stzsup.adb +++ b/gcc/ada/a-stzsup.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 2003-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2010, 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- -- @@ -796,6 +796,19 @@ package body Ada.Strings.Wide_Wide_Superbounded is -- Super_Find_Token -- ---------------------- + procedure Super_Find_Token + (Source : Super_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + begin + Wide_Wide_Search.Find_Token + (Source.Data (From .. Source.Current_Length), Set, Test, First, Last); + end Super_Find_Token; + procedure Super_Find_Token (Source : Super_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzsup.ads b/gcc/ada/a-stzsup.ads index 978ad34e3f0a..7e67f53bae84 100644 --- a/gcc/ada/a-stzsup.ads +++ b/gcc/ada/a-stzsup.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2003-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 2003-2010, 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- -- @@ -304,6 +304,14 @@ package Ada.Strings.Wide_Wide_Superbounded is (Source : Super_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; + procedure Super_Find_Token + (Source : Super_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + procedure Super_Find_Token (Source : Super_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzunb-shared.adb b/gcc/ada/a-stzunb-shared.adb index e20cd98e8a09..75799dad2f22 100644 --- a/gcc/ada/a-stzunb-shared.adb +++ b/gcc/ada/a-stzunb-shared.adb @@ -824,6 +824,20 @@ package body Ada.Strings.Wide_Wide_Unbounded is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Unbounded_Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + SR : constant Shared_Wide_Wide_String_Access := Source.Reference; + begin + Wide_Wide_Search.Find_Token + (SR.Data (From .. SR.Last), Set, Test, First, Last); + end Find_Token; + procedure Find_Token (Source : Unbounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzunb-shared.ads b/gcc/ada/a-stzunb-shared.ads index 4617f56fdc23..3a3cba300a35 100644 --- a/gcc/ada/a-stzunb-shared.ads +++ b/gcc/ada/a-stzunb-shared.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -276,6 +276,15 @@ package Ada.Strings.Wide_Wide_Unbounded is (Source : Unbounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Unbounded_Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Unbounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzunb.adb b/gcc/ada/a-stzunb.adb index 226e26906ed6..82dae6f88b74 100644 --- a/gcc/ada/a-stzunb.adb +++ b/gcc/ada/a-stzunb.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, 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- -- @@ -514,6 +514,19 @@ package body Ada.Strings.Wide_Wide_Unbounded is -- Find_Token -- ---------------- + procedure Find_Token + (Source : Unbounded_Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Strings.Membership; + First : out Positive; + Last : out Natural) + is + begin + Wide_Wide_Search.Find_Token + (Source.Reference (From .. Source.Last), Set, Test, First, Last); + end Find_Token; + procedure Find_Token (Source : Unbounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-stzunb.ads b/gcc/ada/a-stzunb.ads index c753051a5f1d..fa7bc17d93de 100644 --- a/gcc/ada/a-stzunb.ads +++ b/gcc/ada/a-stzunb.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- -- -- -- This specification is derived from the Ada Reference Manual for use with -- -- GNAT. The copyright notice above, and the license provisions that follow -- @@ -266,6 +266,15 @@ package Ada.Strings.Wide_Wide_Unbounded is (Source : Unbounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set) return Natural; + procedure Find_Token + (Source : Unbounded_Wide_Wide_String; + Set : Wide_Wide_Maps.Wide_Wide_Character_Set; + From : Positive; + Test : Membership; + First : out Positive; + Last : out Natural); + pragma Ada_2012 (Find_Token); + procedure Find_Token (Source : Unbounded_Wide_Wide_String; Set : Wide_Wide_Maps.Wide_Wide_Character_Set; diff --git a/gcc/ada/a-textio.adb b/gcc/ada/a-textio.adb index 27a0c3b7f74c..924bfe59b3e2 100644 --- a/gcc/ada/a-textio.adb +++ b/gcc/ada/a-textio.adb @@ -758,7 +758,7 @@ package body Ada.Text_IO is if P = Null_Address then pragma Assert (Buf (N) = ASCII.NUL); - memcpy (Item (Item'First + Last)'Address, + memcpy (Item (Last + 1)'Address, Buf (1)'Address, size_t (N - 1)); Last := Last + N - 1; @@ -783,7 +783,7 @@ package body Ada.Text_IO is K := K - 1; end if; - memcpy (Item (Item'First + Last)'Address, + memcpy (Item (Last + 1)'Address, Buf (1)'Address, size_t (K)); Last := Last + K; end; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index edad7e32e57b..bd7e144a2981 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -407,6 +407,11 @@ package body Sem_Prag is -- UU_Typ is the related Unchecked_Union type. Flag In_Variant_Part -- should be set when Comp comes from a record variant. + procedure Check_Duplicate_Pragma (E : Entity_Id); + -- Check if a pragma of the same name as the current pragma is already + -- chained as a rep pragma to the given entity. if so give a message + -- about the duplicate, using Error_Pragma so the call does not return. + procedure Check_Duplicated_Export_Name (Nam : Node_Id); -- Nam is an N_String_Literal node containing the external name set by -- an Import or Export pragma (or extended Import or Export pragma). @@ -1194,6 +1199,17 @@ package body Sem_Prag is end if; end Check_Component; + procedure Check_Duplicate_Pragma (E : Entity_Id) is + P : constant Node_Id := Get_Rep_Pragma (E, Pragma_Name (N)); + begin + if Present (P) then + Error_Msg_Name_1 := Pname; + Error_Msg_Sloc := Sloc (P); + Error_Msg_NE ("pragma% for & duplicates one#", N, E); + raise Pragma_Exit; + end if; + end Check_Duplicate_Pragma; + ---------------------------------- -- Check_Duplicated_Export_Name -- ---------------------------------- @@ -1306,8 +1322,16 @@ package body Sem_Prag is ("argument for pragma% must be library level entity", Arg1); end if; + -- AI05-0033 : pragma cannot appear within a generic body, because + -- instance can be in a nested scope. The check that protected type + -- is itself a library-level declaration is done elsewhere. + if Inside_A_Generic then - Error_Pragma ("pragma% cannot be used inside a generic"); + if Ekind (Scope (Current_Scope)) = E_Generic_Package + and then In_Package_Body (Scope (Current_Scope)) + then + Error_Pragma ("pragma% cannot be used inside a generic"); + end if; end if; end Check_Interrupt_Or_Attach_Handler; @@ -2220,6 +2244,12 @@ package body Sem_Prag is D := Declaration_Node (E); K := Nkind (D); + -- Check duplicate before we chain ourselves! + + Check_Duplicate_Pragma (E); + + -- Now check appropriateness of the entity + if Is_Type (E) then if Rep_Item_Too_Early (E, N) or else @@ -5946,6 +5976,8 @@ package body Sem_Prag is E := Entity (E_Id); + Check_Duplicate_Pragma (E); + if Rep_Item_Too_Early (E, N) or else Rep_Item_Too_Late (E, N) @@ -8410,6 +8442,12 @@ package body Sem_Prag is D := Declaration_Node (E); K := Nkind (D); + -- Check duplicate before we chain ourselves! + + Check_Duplicate_Pragma (E); + + -- Check appropriate entity + if Is_Type (E) then if Rep_Item_Too_Early (E, N) or else @@ -8464,6 +8502,12 @@ package body Sem_Prag is E := Entity (E_Id); + -- Check duplicate before we chain ourselves! + + Check_Duplicate_Pragma (E); + + -- Check appropriate entity + if Rep_Item_Too_Early (E, N) or else Rep_Item_Too_Late (E, N)