diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-03 08:22:52 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-08-03 08:22:52 +0000 |
commit | 23255a5b14416256c1b36986cdc40840ce5ff434 (patch) | |
tree | eeabf64a1a78064507c612cff6b0b9e20b698374 /gcc/ada/lib.adb | |
parent | bdf265a31f4b0fb27b3bb80337b3050f4ed7725d (diff) | |
download | ppe42-gcc-23255a5b14416256c1b36986cdc40840ce5ff434.tar.gz ppe42-gcc-23255a5b14416256c1b36986cdc40840ce5ff434.zip |
2011-08-03 Eric Botcazou <ebotcazou@adacore.com>
* gnat_ugn.texi: Document -Wstack-usage.
* gcc-interface/misc.c (enumerate_modes): Add guard for ghost FP modes.
2011-08-03 Thomas Quinot <quinot@adacore.com>
* sem_prag.adb Issue an error (not a warning) when a C++ type does not
have keyword LIMITED.
2011-08-03 Yannick Moy <moy@adacore.com>
* alfa.adb, alfa.ads, alfa_test.adb: New files.
* ali.adb (Known_ALI_Lines): add 'C' lines (SCO) and 'F' lines (ALFA)
(Scan_ALI): do not issue a fatal error if parsing known lines after Xref
section (does not happen in compiler, only if code directly calls
Scan_ALI).
* get_alfa.adb, get_alfa.ads: New files.
* lib-writ.adb, lib-writ.ads (Write_ALI): output ALFA information if
needed.
* lib-xref-alfa.adb: New file.
* lib-xref.adb, lib-xref.ads
(Xref_Entry): redefine information needed in cross-references for ALFA.
Push ALFA treatments in separated local package.
(Enclosing_Subpragram_Or_Package): treat specially subprogram
identifiers. Return entity of package body instead of spec. Return
Empty for a scope with no location.
(Generate_Reference): adapt to new components for ALFA information.
Remove the need for D references on definitions.
(Is_Local_Reference): moved to ALFA local package
(Output_References): extract subfunction as Extract_Source_Name
(Output_Local_References): remove procedure, replaced by filtering of
cross-references in package ALFA and printing in Put_ALFA.
(Write_Entity_Name): remove procedure
* lib.adb, lib.ads (Extract_Source_Name): extract here function to
print exact name of entity as it appears in source file
(Unit_Ref_Table): make type public for use in Lib.Xref.ALFA
* put_alfa.adb, put_alfa.ads: New files.
* xref_lib.adb (Search_Xref): protect read of cross-references against
reading other sections of the ALI file, in gnatxref
(Search): protect read of cross-references against reading other
sections of the ALI file, in gnatfind.
* gcc-interface/Make-lang.in: Update dependencies.
2011-08-03 Thomas Quinot <quinot@adacore.com>
* sem_ch3.adb: Minor reformatting.
2011-08-03 Jose Ruiz <ruiz@adacore.com>
* s-inmaop-vxworks.adb (Setup_Interrupt_Mask): Do nothing instead of
raising an exception.
2011-08-03 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Set_String_Literal_Subtype): if index type is an integer
type, always use 1 as the lower bound or string, even if lower bound of
context is not static, to handle properly null strings in a non-static
context.
2011-08-03 Bob Duff <duff@adacore.com>
* sem_prag.adb (Resolve_Aggregate): An array aggregate with 'others' is
always legal on the right-hand side of an assignment statement; there
is always an applicable index constraint in this case. Therefore, the
check for Pkind = N_Assignment_Statement is now unconditional -- it
doesn't depend on whether Is_Constrained (Typ).
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@177239 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/lib.adb')
-rw-r--r-- | gcc/ada/lib.adb | 80 |
1 files changed, 69 insertions, 11 deletions
diff --git a/gcc/ada/lib.adb b/gcc/ada/lib.adb index 42d922fcc95..c5149bee3b0 100644 --- a/gcc/ada/lib.adb +++ b/gcc/ada/lib.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2010, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2011, 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- -- @@ -33,16 +33,18 @@ pragma Style_Checks (All_Checks); -- Subprogram ordering not enforced in this unit -- (because of some logical groupings). -with Atree; use Atree; -with Einfo; use Einfo; -with Fname; use Fname; -with Output; use Output; -with Sinfo; use Sinfo; -with Sinput; use Sinput; -with Stand; use Stand; -with Stringt; use Stringt; -with Tree_IO; use Tree_IO; -with Uname; use Uname; +with Atree; use Atree; +with Csets; use Csets; +with Einfo; use Einfo; +with Fname; use Fname; +with Output; use Output; +with Sinfo; use Sinfo; +with Sinput; use Sinput; +with Stand; use Stand; +with Stringt; use Stringt; +with Tree_IO; use Tree_IO; +with Uname; use Uname; +with Widechar; use Widechar; package body Lib is @@ -478,6 +480,62 @@ package body Lib is return Check_Same_Extended_Unit (S1, S2) = Yes_Before; end Earlier_In_Extended_Unit; + ----------------------- + -- Exact_Source_Name -- + ----------------------- + + function Exact_Source_Name (Loc : Source_Ptr) return String is + U : constant Unit_Number_Type := Get_Source_Unit (Loc); + Buf : constant Source_Buffer_Ptr := Source_Text (Source_Index (U)); + Orig : constant Source_Ptr := Original_Location (Loc); + P : Source_Ptr; + + WC : Char_Code; + Err : Boolean; + pragma Warnings (Off, WC); + pragma Warnings (Off, Err); + + begin + -- Entity is character literal + + if Buf (Orig) = ''' then + return String (Buf (Orig .. Orig + 2)); + + -- Entity is operator symbol + + elsif Buf (Orig) = '"' or else Buf (Orig) = '%' then + P := Orig; + + loop + P := P + 1; + exit when Buf (P) = Buf (Orig); + end loop; + + return String (Buf (Orig .. P)); + + -- Entity is identifier + + else + P := Orig; + + loop + if Is_Start_Of_Wide_Char (Buf, P) then + Scan_Wide (Buf, P, WC, Err); + elsif not Identifier_Char (Buf (P)) then + exit; + else + P := P + 1; + end if; + end loop; + + -- Write out the identifier by copying the exact source characters + -- used in its declaration. Note that this means wide characters will + -- be in their original encoded form. + + return String (Buf (Orig .. P - 1)); + end if; + end Exact_Source_Name; + ---------------------------- -- Entity_Is_In_Main_Unit -- ---------------------------- |