diff options
author | No Author <no-author@gcc.gnu.org> | 2004-04-19 02:00:25 +0000 |
---|---|---|
committer | No Author <no-author@gcc.gnu.org> | 2004-04-19 02:00:25 +0000 |
commit | b5c77e3b18ebef8731e0cc850f34ecfeae7c8e2e (patch) | |
tree | 738f4c41644096b56d9fe9f526d235698d47f842 | |
parent | bee06b23ab24bb5e62dd7eb7c20ea53eb767ef10 (diff) |
This commit was manufactured by cvs2svn to create tagreleases/gcc-3.4.0
'gcc_3_4_0_release'.
From-SVN: r80844
23 files changed, 0 insertions, 2809 deletions
diff --git a/gcc/ada/xgnatugn.adb b/gcc/ada/xgnatugn.adb deleted file mode 100644 index 5a992f4e8ed..00000000000 --- a/gcc/ada/xgnatugn.adb +++ /dev/null @@ -1,1380 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT SYSTEM UTILITIES -- --- -- --- X G N A T U G N -- --- -- --- B o d y -- --- -- --- Copyright (C) 2003-2004 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 2, 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 COPYING. If not, write -- --- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- --- MA 02111-1307, USA. -- --- -- ------------------------------------------------------------------------------- - --- This utility is used to process the source of gnat_ugn.texi to make a --- version suitable for running through standard Texinfo processor. It is --- invoked as follows: - --- xgnatugn <target> <in-file> <word-list> [ <out-file> [ <warnings> ] ] - --- 1. <target> is the target type of the manual, which is one of: - --- unw Unix and Windows platforms --- vms OpenVMS - --- 2. <in-file> is the file name of the Texinfo file to be --- preprocessed. - --- 3. <word-list> is the name of the word list file. This file is used for --- rewriting the VMS edition. Each line contains a word mapping: The source --- word in the first column, the target word in the second column. The --- columns are separated by a '^' character. When preprocessing for VMS, the --- first word is replaced with the second. (Words consist of letters, --- digits, and the four characters "?-_~". A sequence of multiple words can --- be replaced if they are listed in the first column, separated by a single --- space character. If multiple words are to be replaced, there must be a --- replacement for each prefix.) - --- 4. <out-file> (optional) is the name of the output file. It defaults to --- gnat_ugn_unw.texi or gnat_ugn_vms.texi, depending on the target. - --- 5. <warnings> (optional, and allowed only if <out-file> is explicit) --- can be any string. If present, it indicates that warning messages are --- to be output to Standard_Error. If absent, no warning messages are --- generated. - --- The following steps are performed: - --- In VMS mode - --- Any occurrences of ^alpha^beta^ are replaced by beta. The sequence --- must fit on a single line, and there can only be one occurrence on a --- line. - --- Any occurrences of a word in the Ug_Words list are replaced by the --- appropriate vms equivalents. Note that replacements do not occur --- within ^alpha^beta^ sequences. - --- Any occurence of [filename].extension, where extension one of the --- following: - --- "o", "ads", "adb", "ali", "ada", "atb", "ats", "adc", "c" - --- replaced by the appropriate VMS names (all upper case with .o --- replaced .OBJ). Note that replacements do not occur within --- ^alpha^beta^ sequences. - --- In UNW mode - --- Any occurrences of ^alpha^beta^ are replaced by alpha. The sequence --- must fit on a single line. - --- In both modes - --- The sequence ^^^ is replaced by a single ^. This escape sequence --- must be used if the literal character ^ is to appear in the --- output. A line containing this escape sequence may not also contain --- a ^alpha^beta^ sequence. - --- Recognize @ifset and @ifclear (this is because we have menu problems --- if we let makeinfo handle the ifset/ifclear pairs - -with Ada.Command_Line; use Ada.Command_Line; -with Ada.Strings; use Ada.Strings; -with Ada.Strings.Fixed; use Ada.Strings.Fixed; -with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; -with Ada.Strings.Maps; use Ada.Strings.Maps; -with Ada.Strings.Maps.Constants; use Ada.Strings.Maps.Constants; -with Ada.Text_IO; use Ada.Text_IO; - -with GNAT.Spitbol; use GNAT.Spitbol; -with GNAT.Spitbol.Table_VString; use GNAT.Spitbol.Table_VString; - -procedure Xgnatugn is - - procedure Usage; - -- Print usage information. Invoked if an invalid command line is - -- encountered. - - Output_File : File_Type; - -- The preprocessed output is written to this file - - type Input_File is record - Name : VString; - Data : File_Type; - Line : Natural := 0; - end record; - -- Records information on an input file. Name and Line are used - -- in error messages, Line is updated automatically by Get_Line. - - function Get_Line (Input : access Input_File) return String; - -- Returns a line from Input and performs the necessary - -- line-oriented checks (length, character set, trailing spaces). - - Number_Of_Warnings : Natural := 0; - Number_Of_Errors : Natural := 0; - Warnings_Enabled : Boolean; - - procedure Error - (Input : Input_File; - At_Character : Natural; - Message : String); - procedure Error - (Input : Input_File; - Message : String); - -- Prints a message reporting an error on line Input.Line. If - -- At_Character is not 0, indicate the exact character at which - -- the error occurs. - - procedure Warning - (Input : Input_File; - At_Character : Natural; - Message : String); - procedure Warning - (Input : Input_File; - Message : String); - -- Like Error, but just print a warning message. - - Dictionary_File : aliased Input_File; - procedure Read_Dictionary_File; - -- Dictionary_File is opened using the name given on the command - -- line. It contains the replacements for the Ug_Words list. - -- Read_Dictionary_File reads Dictionary_File and fills the - -- Ug_Words table. - - Source_File : aliased Input_File; - procedure Process_Source_File; - -- Source_File is opened using the name given on the command line. - -- It contains the Texinfo source code. Process_Source_File - -- performs the necessary replacements. - - type Target_Type is (UNW, VMS); - Target : Target_Type; - -- The target for which preprocessing is performed: - -- UNW (Unix and Windows) or VMS - -- The Target variable is initialized using the command line. - - Valid_Characters : constant Character_Set - := To_Set (Span => (' ', '~')); - -- This array controls which characters are permitted in the input - -- file (after line breaks have been removed). Valid characters - -- are all printable ASCII characters and the space character. - - Word_Characters : constant Character_Set := - (To_Set (Ranges => - (('0', '9'), ('a', 'z'), ('A', 'Z'))) - or To_Set ("?-_~")); - -- The characters which are permitted in words. Other (valid) - -- characters are assumed to be delimiters between words. Note that - -- this set has to include all characters of the source words of the - -- Ug_Words dictionary. - - Reject_Trailing_Spaces : constant Boolean := True; - -- Controls whether Xgnatug rejects superfluous space characters - -- at the end of lines. - - Maximum_Line_Length : constant Positive := 79; - Fatal_Line_Length_Limit : constant Positive := 5000; - Fatal_Line_Length : exception; - -- If Maximum_Line_Length is exceeded in an input file, an error - -- message is printed. If Fatal_Line_Length is exceeded, - -- execution terminates with a Fatal_Line_Length exception. - - VMS_Escape_Character : constant Character := '^'; - -- The character used to mark VMS alternatives (^alpha^beta^). - - Extensions : GNAT.Spitbol.Table_VString.Table (20); - procedure Initialize_Extensions; - -- This table records extensions and their replacement for - -- rewriting filenames in the VMS version of the manual. - - function Is_Extension (Extension : String) return Boolean; - function Get_Replacement_Extension (Extension : String) return String; - -- These functions query the replacement table. Is_Extension - -- checks if the given string is a known extension. - -- Get_Replacement returns the replacement extension. - - Ug_Words : GNAT.Spitbol.Table_VString.Table (200); - function Is_Known_Word (Word : String) return Boolean; - function Get_Replacement_Word (Word : String) return String; - -- The Ug_Words table lists replacement words for the VMS version - -- of the manual. Is_Known_Word and Get_Replacement_Word query - -- this table. The table is filled using Read_Dictionary_File. - - function Rewrite_Source_Line (Line : String) return String; - -- This subprogram takes a line and rewrites it according to Target. - -- It relies on information in Source_File to generate error messages. - - type Conditional is (Set, Clear); - procedure Push_Conditional (Cond : Conditional; Flag : Target_Type); - procedure Pop_Conditional (Cond : Conditional); - -- These subprograms deal with conditional processing (@ifset/@ifclear). - -- They rely on information in Source_File to generate error messages. - - function Currently_Excluding return Boolean; - -- Returns true if conditional processing directives imply that the - -- current line should not be included in the output. - - function VMS_Context_Determined return Boolean; - -- Returns true if, in the current conditional preprocessing context, we - -- always have a VMS or a non-VMS version, regardless of the value of - -- Target. - - function In_VMS_Section return Boolean; - -- Returns True if in an "@ifset vms" section. - - procedure Check_No_Pending_Conditional; - -- Checks that all preprocessing directives have been properly matched by - -- their @end counterpart. If this is not the case, print an error - -- message. - - -- The following definitions implement a stack to track the conditional - -- preprocessing context. - - type Conditional_Context is record - Starting_Line : Positive; - Cond : Conditional; - Flag : Target_Type; - Excluding : Boolean; - end record; - - Conditional_Stack_Depth : constant := 3; - - Conditional_Stack : - array (1 .. Conditional_Stack_Depth) of Conditional_Context; - - Conditional_TOS : Natural := 0; - -- Pointer to the Top Of Stack for Conditional_Stack. - - ----------- - -- Usage -- - ----------- - - procedure Usage is - begin - Put_Line (Standard_Error, - "usage: xgnatug TARGET SOURCE DICTIONARY [OUTFILE [WARNINGS]]"); - New_Line; - Put_Line (Standard_Error, "TARGET is one of:"); - - for T in Target_Type'Range loop - Put_Line (Standard_Error, " " & Target_Type'Image (T)); - end loop; - - New_Line; - Put_Line (Standard_Error, "SOURCE is the source file to process."); - New_Line; - Put_Line (Standard_Error, "DICTIONARY is the name of a file " - & "that contains word replacements"); - Put_Line (Standard_Error, "for the VMS version."); - New_Line; - Put_Line (Standard_Error, - "OUT-FILE, if present, is the output file to be created;"); - Put_Line (Standard_Error, - "If OUT-FILE is absent, the output file is either " & - "gnat_ugn_unw.texi, "); - Put_Line (Standard_Error, - "or gnat_ugn_vms.texi, depending on TARGET."); - New_Line; - Put_Line (Standard_Error, - "WARNINGS, if present, is any string;"); - Put_Line (Standard_Error, - "it will result in warning messages (e.g., line too long))"); - Put_Line (Standard_Error, - "being output to Standard_Error."); - end Usage; - - -------------- - -- Get_Line -- - -------------- - - function Get_Line (Input : access Input_File) return String is - Line_Buffer : String (1 .. Fatal_Line_Length_Limit); - Last : Natural; - - begin - Input.Line := Input.Line + 1; - Get_Line (Input.Data, Line_Buffer, Last); - - if Last = Line_Buffer'Last then - Error (Input.all, "line exceeds fatal line length limit"); - raise Fatal_Line_Length; - end if; - - declare - Line : String renames Line_Buffer (Line_Buffer'First .. Last); - - begin - for J in Line'Range loop - if not Is_In (Line (J), Valid_Characters) then - Error (Input.all, J, "invalid character"); - exit; - end if; - end loop; - - if Line'Length > Maximum_Line_Length then - Warning (Input.all, Maximum_Line_Length + 1, "line too long"); - end if; - - if Reject_Trailing_Spaces - and then Line'Length > 0 - and then Line (Line'Last) = ' ' - then - Error (Input.all, Line'Last, "trailing space character"); - end if; - - return Trim (Line, Right); - end; - end Get_Line; - - ----------- - -- Error -- - ----------- - - procedure Error - (Input : Input_File; - Message : String) - is - begin - Error (Input, 0, Message); - end Error; - - procedure Error - (Input : Input_File; - At_Character : Natural; - Message : String) - is - Line_Image : constant String := Integer'Image (Input.Line); - At_Character_Image : constant String := Integer'Image (At_Character); - -- These variables are required because we have to drop the leading - -- space character. - - begin - Number_Of_Errors := Number_Of_Errors + 1; - - if At_Character > 0 then - Put_Line (Standard_Error, - S (Input.Name) & ':' - & Line_Image (Line_Image'First + 1 .. Line_Image'Last) & ':' - & At_Character_Image (At_Character_Image'First + 1 - .. At_Character_Image'Last) - & ": " - & Message); - else - Put_Line (Standard_Error, - S (Input.Name) & ':' - & Line_Image (Line_Image'First + 1 .. Line_Image'Last) - & ": " - & Message); - end if; - end Error; - - ------------- - -- Warning -- - ------------- - - procedure Warning - (Input : Input_File; - Message : String) - is - begin - if Warnings_Enabled then - Warning (Input, 0, Message); - end if; - end Warning; - - procedure Warning - (Input : Input_File; - At_Character : Natural; - Message : String) - is - Line_Image : constant String := Integer'Image (Input.Line); - At_Character_Image : constant String := Integer'Image (At_Character); - -- These variables are required because we have to drop the leading - -- space character. - - begin - if not Warnings_Enabled then - return; - end if; - - Number_Of_Warnings := Number_Of_Warnings + 1; - - if At_Character > 0 then - Put_Line (Standard_Error, - S (Input.Name) & ':' - & Line_Image (Line_Image'First + 1 .. Line_Image'Last) & ':' - & At_Character_Image (At_Character_Image'First + 1 - .. At_Character_Image'Last) - & ": warning: " - & Message); - else - Put_Line (Standard_Error, - S (Input.Name) & ':' - & Line_Image (Line_Image'First + 1 .. Line_Image'Last) - & ": warning: " - & Message); - end if; - end Warning; - - -------------------------- - -- Read_Dictionary_File -- - -------------------------- - - procedure Read_Dictionary_File is - begin - while not End_Of_File (Dictionary_File.Data) loop - declare - Line : constant String := - Get_Line (Dictionary_File'Access); - Split : constant Natural := - Index (Line, (1 => VMS_Escape_Character)); - - begin - if Line'Length = 0 then - Error (Dictionary_File, "empty line in dictionary file"); - - elsif Line (Line'First) = ' ' then - Error (Dictionary_File, 1, "line starts with space character"); - - elsif Split = 0 then - Error (Dictionary_File, "line does not contain " - & VMS_Escape_Character & " character"); - else - declare - Source : constant String := - Trim (Line (1 .. Split - 1), Both); - Target : constant String := - Trim (Line (Split + 1 .. Line'Last), Both); - Two_Spaces : constant Natural := - Index (Source, " "); - Non_Word_Character : constant Natural := - Index (Source, - Word_Characters or - To_Set (" "), - Outside); - - begin - if Two_Spaces /= 0 then - Error (Dictionary_File, Two_Spaces, - "multiple space characters in source word"); - end if; - - if Non_Word_Character /= 0 then - Error (Dictionary_File, Non_Word_Character, - "illegal character in source word"); - end if; - - if Source'Length = 0 then - Error (Dictionary_File, "source is empty"); - - elsif Target'Length = 0 then - Error (Dictionary_File, "target is empty"); - - else - Set (Ug_Words, Source, V (Target)); - - -- Ensure that if Source is a sequence of words - -- "WORD1 WORD2 ...", we already have a mapping for - -- "WORD1". - - for J in Source'Range loop - if Source (J) = ' ' then - declare - Prefix : String renames - Source (Source'First .. J - 1); - - begin - if not Is_Known_Word (Prefix) then - Error (Dictionary_File, - "prefix '" & Prefix - & "' not known at this point"); - end if; - end; - end if; - end loop; - end if; - end; - end if; - end; - end loop; - end Read_Dictionary_File; - - ------------------------- - -- Rewrite_Source_Line -- - ------------------------- - - function Rewrite_Source_Line (Line : String) return String is - - -- We use a simple lexer to split the line into tokens: - - -- Word consisting entirely of Word_Characters - -- VMS_Alternative ^alpha^beta^ replacement (but not ^^^) - -- Space a space character - -- Other everything else (sequence of non-word characters) - -- VMS_Error incomplete VMS alternative - -- End_Of_Line no more characters on this line - - -- A sequence of three VMS_Escape_Characters is automatically - -- collapsed to an Other token. - - type Token_Span is record - First, Last : Positive; - end record; - -- The character range covered by a token in Line - - type Token_Kind is (End_Of_Line, Word, Other, - VMS_Alternative, VMS_Error); - type Token_Record (Kind : Token_Kind := End_Of_Line) is record - First : Positive; - case Kind is - when Word | Other => - Span : Token_Span; - when VMS_Alternative => - Non_VMS, VMS : Token_Span; - when VMS_Error | End_Of_Line => - null; - end case; - end record; - - Input_Position : Positive := Line'First; - Token : Token_Record; - -- The position of the next character to be processed by Next_Token - - procedure Next_Token; - -- Returns the next token in Line, starting at Input_Position - - Rewritten_Line : VString; - -- Collects the line as it is rewritten - - procedure Rewrite_Word; - -- The current token is assumed to be a Word. When processing the VMS - -- version of the manual, additional tokens are gathered to check if - -- we have a file name or a sequence of known words. - - procedure Maybe_Rewrite_Extension; - -- The current token is assumed to be Other. When processing the VMS - -- version of the manual and the token represents a single dot ".", - -- the following word is rewritten according to the rules for - -- extensions. - - VMS_Token_Seen : Boolean := False; - -- This is set to true if a VMS_Alternative has been encountered, or a - -- ^^^ token. - - ---------------- - -- Next_Token -- - ---------------- - - procedure Next_Token is - Remaining_Line : String renames Line (Input_Position .. Line'Last); - Last_Character : Natural; - - begin - if Remaining_Line'Length = 0 then - Token := (End_Of_Line, Remaining_Line'First); - return; - end if; - - -- ^alpha^beta^, the VMS_Alternative case. - - if Remaining_Line (Remaining_Line'First) = VMS_Escape_Character then - declare - VMS_Second_Character, VMS_Third_Character : Natural; - - begin - if VMS_Token_Seen then - Error (Source_File, Remaining_Line'First, - "multiple " & VMS_Escape_Character - & " characters on a single line"); - else - VMS_Token_Seen := True; - end if; - - -- Find the second and third escape character. If one of - -- them is not present, generate an error token. - - VMS_Second_Character := - Index (Remaining_Line (Remaining_Line'First + 1 - .. Remaining_Line'Last), - (1 => VMS_Escape_Character)); - - if VMS_Second_Character = 0 then - Input_Position := Remaining_Line'Last + 1; - Token := (VMS_Error, Remaining_Line'First); - return; - end if; - - VMS_Third_Character := - Index (Remaining_Line (VMS_Second_Character + 1 - .. Remaining_Line'Last), - (1 => VMS_Escape_Character)); - - if VMS_Third_Character = 0 then - Input_Position := Remaining_Line'Last + 1; - Token := (VMS_Error, Remaining_Line'First); - return; - end if; - - -- Consume all the characters we are about to include in - -- the token. - - Input_Position := VMS_Third_Character + 1; - - -- Check if we are in a ^^^ situation, and return an Other - -- token in this case. - - if Remaining_Line'First + 1 = VMS_Second_Character - and then Remaining_Line'First + 2 = VMS_Third_Character - then - Token := (Other, Remaining_Line'First, - (Remaining_Line'First, Remaining_Line'First)); - return; - end if; - - Token := (VMS_Alternative, Remaining_Line'First, - (Remaining_Line'First + 1, VMS_Second_Character - 1), - (VMS_Second_Character + 1, VMS_Third_Character - 1)); - return; - end; - end if; -- VMS_Alternative - - -- The Word case. Search for characters not in Word_Characters. - -- We have found a word if the first non-word character is not - -- the first character in Remaining_Line, i.e. if Remaining_Line - -- starts with a word character. - - Last_Character := Index (Remaining_Line, Word_Characters, Outside); - if Last_Character /= Remaining_Line'First then - - -- If we haven't found a character which is not in - -- Word_Characters, all remaining characters are part of the - -- current Word token. - - if Last_Character = 0 then - Last_Character := Remaining_Line'Last + 1; - end if; - - Input_Position := Last_Character; - Token := (Word, Remaining_Line'First, - (Remaining_Line'First, Last_Character - 1)); - return; - end if; - - -- Remaining characters are in the Other category. To speed - -- up processing, we collect them together if there are several - -- of them. - - Input_Position := Last_Character + 1; - Token := (Other, - Remaining_Line'First, - (Remaining_Line'First, Last_Character)); - end Next_Token; - - ------------------ - -- Rewrite_Word -- - ------------------ - - procedure Rewrite_Word is - First_Word : String - renames Line (Token.Span.First .. Token.Span.Last); - - begin - -- We do not perform any error checking below, so we can just skip - -- all processing for the non-VMS version. - - if Target /= VMS then - Append (Rewritten_Line, First_Word); - Next_Token; - return; - end if; - - if Is_Known_Word (First_Word) then - - -- If we have a word from the dictionary, we look for the - -- longest possible sequence we can rewrite. - - declare - Seq : Token_Span := Token.Span; - Lost_Space : Boolean := False; - - begin - Next_Token; - loop - if Token.Kind = Other - and then Line (Token.Span.First .. Token.Span.Last) = " " - then - Next_Token; - if Token.Kind /= Word - or else not Is_Known_Word (Line (Seq.First - .. Token.Span.Last)) - then - -- When we reach this point, the following - -- conditions are true: - -- - -- Seq is a known word. - -- The previous token was a space character. - -- Seq extended to the current token is not a - -- known word. - - Lost_Space := True; - exit; - - else - - -- Extend Seq to cover the current (known) word. - - Seq.Last := Token.Span.Last; - Next_Token; - end if; - - else - -- When we reach this point, the following conditions - -- are true: - -- - -- Seq is a known word. - -- The previous token was a word. - -- The current token is not a space character. - - exit; - end if; - end loop; - - -- Rewrite Seq, and add the lost space if necessary - - Append (Rewritten_Line, - Get_Replacement_Word (Line (Seq.First .. Seq.Last))); - if Lost_Space then - Append (Rewritten_Line, ' '); - end if; - - -- The unknown token will be processed during the - -- next iteration of the main loop. - return; - end; - end if; - - Next_Token; - - if Token.Kind = Other - and then Line (Token.Span.First .. Token.Span.Last) = "." - then - -- Deal with extensions - - Next_Token; - if Token.Kind = Word - and then Is_Extension (Line (Token.Span.First - .. Token.Span.Last)) - then - -- We have discovered a file extension. Convert the file - -- name to upper case. - - Append (Rewritten_Line, - Translate (First_Word, Upper_Case_Map) & '.'); - Append (Rewritten_Line, - Get_Replacement_Extension - (Line (Token.Span.First .. Token.Span.Last))); - Next_Token; - else - -- We already have: Word ".", followed by an unknown - -- token. - - Append (Rewritten_Line, First_Word & '.'); - - -- The unknown token will be processed during the next - -- iteration of the main loop. - end if; - - else - -- We have an unknown Word, followed by an unknown token. - -- The unknown token will be processed by the outer loop. - - Append (Rewritten_Line, First_Word); - end if; - end Rewrite_Word; - - ----------------------------- - -- Maybe_Rewrite_Extension -- - ----------------------------- - - procedure Maybe_Rewrite_Extension is - begin - -- Again, we need no special processing in the non-VMS case - - if Target = VMS - and then Line (Token.Span.First .. Token.Span.Last) = "." - then - -- This extension is not preceded by a word, otherwise - -- Rewrite_Word would have handled it. - - Next_Token; - if Token.Kind = Word - and then Is_Extension (Line (Token.Span.First - .. Token.Span.Last)) - then - Append (Rewritten_Line, '.' & Get_Replacement_Extension - (Line (Token.Span.First .. Token.Span.Last))); - Next_Token; - else - Append (Rewritten_Line, '.'); - end if; - else - Append (Rewritten_Line, Line (Token.Span.First - .. Token.Span.Last)); - Next_Token; - end if; - end Maybe_Rewrite_Extension; - - -- Start of processing for Process_Source_Line - - begin - -- The following parser recognizes the following special token - -- sequences: - - -- Word "." Word rewrite as file name if second word is extension - -- Word " " Word rewrite as a single word using Ug_Words table - - Next_Token; - loop - case Token.Kind is - when End_Of_Line => - exit; - - when Word => - Rewrite_Word; - - when Other => - Maybe_Rewrite_Extension; - - when VMS_Alternative => - if VMS_Context_Determined then - if (not In_VMS_Section) - or else - Line (Token.VMS.First .. Token.VMS.Last) /= - Line (Token.Non_VMS.First .. Token.Non_VMS.Last) - then - Warning (Source_File, Token.First, - "VMS alternative already determined " - & "by conditionals"); - end if; - end if; - if Target = VMS then - Append (Rewritten_Line, Line (Token.VMS.First - .. Token.VMS.Last)); - else - Append (Rewritten_Line, Line (Token.Non_VMS.First - .. Token.Non_VMS.Last)); - end if; - Next_Token; - - when VMS_Error => - Error (Source_File, Token.First, "invalid VMS alternative"); - Next_Token; - end case; - end loop; - - return S (Rewritten_Line); - end Rewrite_Source_Line; - - ------------------------- - -- Process_Source_File -- - ------------------------- - - procedure Process_Source_File is - Ifset : constant String := "@ifset "; - Ifclear : constant String := "@ifclear "; - Endsetclear : constant String := "@end "; - -- Strings to be recognized for conditional processing. - - begin - while not End_Of_File (Source_File.Data) loop - declare - Line : constant String := Get_Line (Source_File'Access); - Rewritten : constant String := Rewrite_Source_Line (Line); - -- We unconditionally rewrite the line so that we can check the - -- syntax of all lines, and not only those which are actually - -- included in the output. - - Have_Conditional : Boolean := False; - -- True if we have encountered a conditional preprocessing - -- directive. - - Cond : Conditional; - -- The kind of the directive. - - Flag : Target_Type; - -- Its flag. - - begin - -- If the line starts with @ifset or @ifclear, we try to convert - -- the following flag to one of our target types. If we fail, - -- Have_Conditional remains False. - - if Line'Length >= Ifset'Length - and then Line (1 .. Ifset'Length) = Ifset - then - Cond := Set; - - declare - Arg : constant String := - Trim (Line (Ifset'Length + 1 .. Line'Last), Both); - - begin - Flag := Target_Type'Value (Arg); - - if Translate (Target_Type'Image (Flag), Lower_Case_Map) - /= Arg - then - Error (Source_File, "flag has to be lowercase"); - end if; - - Have_Conditional := True; - - exception - when Constraint_Error => - Error (Source_File, "unknown flag for '@ifset'"); - end; - - elsif Line'Length >= Ifclear'Length - and then Line (1 .. Ifclear'Length) = Ifclear - then - Cond := Clear; - - declare - Arg : constant String := - Trim (Line (Ifclear'Length + 1 .. Line'Last), Both); - - begin - Flag := Target_Type'Value (Arg); - if Translate (Target_Type'Image (Flag), Lower_Case_Map) - /= Arg - then - Error (Source_File, "flag has to be lowercase"); - end if; - - Have_Conditional := True; - - exception - when Constraint_Error => - Error (Source_File, "unknown flag for '@ifclear'"); - end; - end if; - - if Have_Conditional then - - -- We create a new conditional context and suppress the - -- directive in the output. - - Push_Conditional (Cond, Flag); - - elsif Line'Length >= Endsetclear'Length - and then Line (1 .. Endsetclear'Length) = Endsetclear - then - -- The '@end ifset'/'@end ifclear' case is handled here. We - -- have to pop the conditional context. - - declare - First, Last : Natural; - - begin - Find_Token (Source => Line (Endsetclear'Length + 1 - .. Line'Length), - Set => Letter_Set, - Test => Inside, - First => First, - Last => Last); - - if Last = 0 then - Error (Source_File, "'@end' without argument"); - else - if Line (First .. Last) = "ifset" then - Have_Conditional := True; - Cond := Set; - elsif Line (First .. Last) = "ifclear" then - Have_Conditional := True; - Cond := Clear; - end if; - - if Have_Conditional then - Pop_Conditional (Cond); - end if; - - -- We fall through to the ordinary case for other @end - -- directives. - - end if; -- @end without argument - end; - end if; -- Have_Conditional - - if not Have_Conditional then - - -- The ordinary case. - - if not Currently_Excluding then - Put_Line (Output_File, Rewritten); - end if; - end if; - end; - end loop; - - Check_No_Pending_Conditional; - end Process_Source_File; - - --------------------------- - -- Initialize_Extensions -- - --------------------------- - - procedure Initialize_Extensions is - - procedure Add (Extension : String); - -- Adds an extension which is replaced with itself (in upper - -- case). - - procedure Add (Extension, Replacement : String); - -- Adds an extension with a custom replacement. - - --------- - -- Add -- - --------- - - procedure Add (Extension : String) is - begin - Add (Extension, Translate (Extension, Upper_Case_Map)); - end Add; - - procedure Add (Extension, Replacement : String) is - begin - Set (Extensions, Extension, V (Replacement)); - end Add; - - -- Start of processing for Initialize_Extensions - - begin - -- To avoid performance degradation, increase the constant in the - -- definition of Extensions above if you add more extensions here. - - Add ("o", "OBJ"); - Add ("ads"); - Add ("adb"); - Add ("ali"); - Add ("ada"); - Add ("atb"); - Add ("ats"); - Add ("adc"); - Add ("c"); - end Initialize_Extensions; - - ------------------ - -- Is_Extension -- - ------------------ - - function Is_Extension (Extension : String) return Boolean is - begin - return Present (Extensions, Extension); - end Is_Extension; - - ------------------------------- - -- Get_Replacement_Extension -- - ------------------------------- - - function Get_Replacement_Extension (Extension : String) return String is - begin - return S (Get (Extensions, Extension)); - end Get_Replacement_Extension; - - ------------------- - -- Is_Known_Word -- - ------------------- - - function Is_Known_Word (Word : String) return Boolean is - begin - return Present (Ug_Words, Word); - end Is_Known_Word; - - -------------------------- - -- Get_Replacement_Word -- - -------------------------- - - function Get_Replacement_Word (Word : String) return String is - begin - return S (Get (Ug_Words, Word)); - end Get_Replacement_Word; - - ---------------------- - -- Push_Conditional -- - ---------------------- - - procedure Push_Conditional (Cond : Conditional; Flag : Target_Type) is - Will_Exclude : Boolean; - - begin - -- If we are already in an excluding context, inherit this property, - -- otherwise calculate it from scratch. - - if Conditional_TOS > 0 - and then Conditional_Stack (Conditional_TOS).Excluding - then - Will_Exclude := True; - else - case Cond is - when Set => - Will_Exclude := Flag /= Target; - when Clear => - Will_Exclude := Flag = Target; - end case; - end if; - - -- Check if the current directive is pointless because of a previous, - -- enclosing directive. - - for J in 1 .. Conditional_TOS loop - if Conditional_Stack (J).Flag = Flag then - Warning (Source_File, "directive without effect because of line" - & Integer'Image (Conditional_Stack (J).Starting_Line)); - end if; - end loop; - - Conditional_TOS := Conditional_TOS + 1; - Conditional_Stack (Conditional_TOS) := - (Starting_Line => Source_File.Line, - Cond => Cond, - Flag => Flag, - Excluding => Will_Exclude); - end Push_Conditional; - - --------------------- - -- Pop_Conditional -- - --------------------- - - procedure Pop_Conditional (Cond : Conditional) is - begin - if Conditional_TOS > 0 then - case Cond is - when Set => - if Conditional_Stack (Conditional_TOS).Cond /= Set then - Error (Source_File, - "'@end ifset' does not match '@ifclear' at line" - & Integer'Image (Conditional_Stack - (Conditional_TOS).Starting_Line)); - end if; - - when Clear => - if Conditional_Stack (Conditional_TOS).Cond /= Clear then - Error (Source_File, - "'@end ifclear' does not match '@ifset' at line" - & Integer'Image (Conditional_Stack - (Conditional_TOS).Starting_Line)); - end if; - end case; - - Conditional_TOS := Conditional_TOS - 1; - - else - case Cond is - when Set => - Error (Source_File, - "'@end ifset' without corresponding '@ifset'"); - - when Clear => - Error (Source_File, - "'@end ifclear' without corresponding '@ifclear'"); - end case; - end if; - end Pop_Conditional; - - ------------------------- - -- Currently_Excluding -- - ------------------------- - - function Currently_Excluding return Boolean is - begin - return Conditional_TOS > 0 - and then Conditional_Stack (Conditional_TOS).Excluding; - end Currently_Excluding; - - ---------------------------- - -- VMS_Context_Determined -- - ---------------------------- - - function VMS_Context_Determined return Boolean is - begin - for J in 1 .. Conditional_TOS loop - if Conditional_Stack (J).Flag = VMS then - return True; - end if; - end loop; - - return False; - end VMS_Context_Determined; - - -------------------- - -- In_VMS_Section -- - -------------------- - - function In_VMS_Section return Boolean is - begin - for J in 1 .. Conditional_TOS loop - if Conditional_Stack (J).Flag = VMS then - return Conditional_Stack (J).Cond = Set; - end if; - end loop; - - return False; - end In_VMS_Section; - - ---------------------------------- - -- Check_No_Pending_Conditional -- - ---------------------------------- - - procedure Check_No_Pending_Conditional is - begin - for J in 1 .. Conditional_TOS loop - case Conditional_Stack (J).Cond is - when Set => - Error (Source_File, "Missing '@end ifset' for '@ifset' at line" - & Integer'Image (Conditional_Stack (J).Starting_Line)); - - when Clear => - Error (Source_File, - "Missing '@end ifclear' for '@ifclear' at line" - & Integer'Image (Conditional_Stack (J).Starting_Line)); - end case; - end loop; - end Check_No_Pending_Conditional; - - ------------------ - -- Main Program -- - ------------------ - - Valid_Command_Line : Boolean; - Output_File_Name : VString; - -begin - Initialize_Extensions; - - Valid_Command_Line := Argument_Count in 3 .. 5; - - -- First argument: Target. - - if Valid_Command_Line then - begin - Target := Target_Type'Value (Argument (1)); - - exception - when Constraint_Error => - Valid_Command_Line := False; - end; - end if; - - -- Second argument: Source_File. - - if Valid_Command_Line then - begin - Source_File.Name := V (Argument (2)); - Open (Source_File.Data, In_File, Argument (2)); - - exception - when Name_Error => - Valid_Command_Line := False; - end; - end if; - - -- Third argument: Dictionary_File. - - if Valid_Command_Line then - begin - Dictionary_File.Name := V (Argument (3)); - Open (Dictionary_File.Data, In_File, Argument (3)); - - exception - when Name_Error => - Valid_Command_Line := False; - end; - end if; - - -- Fourth argument: Output_File. - - if Valid_Command_Line then - if Argument_Count in 4 .. 5 then - Output_File_Name := V (Argument (4)); - else - case Target is - when UNW => - Output_File_Name := V ("gnat_ugn_unw.texi"); - when VMS => - Output_File_Name := V ("gnat_ugn_vms.texi"); - end case; - end if; - - Warnings_Enabled := Argument_Count = 5; - - begin - Create (Output_File, Out_File, S (Output_File_Name)); - - exception - when Name_Error | Use_Error => - Valid_Command_Line := False; - end; - end if; - - if not Valid_Command_Line then - Usage; - Set_Exit_Status (Failure); - - else - Read_Dictionary_File; - Close (Dictionary_File.Data); - - -- Main processing starts here. - - Process_Source_File; - Close (Output_File); - Close (Source_File.Data); - - New_Line (Standard_Error); - - if Number_Of_Warnings = 0 then - Put_Line (Standard_Error, " NO Warnings"); - - else - Put (Standard_Error, Integer'Image (Number_Of_Warnings)); - Put (Standard_Error, " Warning"); - - if Number_Of_Warnings > 1 then - Put (Standard_Error, "s"); - end if; - - New_Line (Standard_Error); - end if; - - if Number_Of_Errors = 0 then - Put_Line (Standard_Error, " NO Errors"); - - else - Put (Standard_Error, Integer'Image (Number_Of_Errors)); - Put (Standard_Error, " Error"); - - if Number_Of_Errors > 1 then - Put (Standard_Error, "s"); - end if; - - New_Line (Standard_Error); - end if; - - if Number_Of_Errors /= 0 then - Set_Exit_Status (Failure); - else - Set_Exit_Status (Success); - end if; - end if; -end Xgnatugn; diff --git a/gcc/config/rs6000/power5.md b/gcc/config/rs6000/power5.md deleted file mode 100644 index 59baa79c30c..00000000000 --- a/gcc/config/rs6000/power5.md +++ /dev/null @@ -1,299 +0,0 @@ -;; Scheduling description for IBM POWER5 processor. -;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. -;; -;; This file is part of GCC. -;; -;; GCC is free software; you can redistribute it and/or modify it -;; under the terms of the GNU General Public License as published -;; by the Free Software Foundation; either version 2, or (at your -;; option) any later version. -;; -;; GCC is distributed in the hope that it will be useful, but WITHOUT -;; 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 -;; along with GCC; see the file COPYING. If not, write to the -;; Free Software Foundation, 59 Temple Place - Suite 330, Boston, -;; MA 02111-1307, USA. - -;; Sources: IBM Red Book and White Paper on POWER5 - -;; The POWER5 has 2 iu, 2 fpu, 2 lsu per engine (2 engines per chip). -;; Instructions that update more than one register get broken into two -;; (split) or more internal ops. The chip can issue up to 5 -;; internal ops per cycle. - -(define_automaton "power5iu,power5fpu,power5misc") - -(define_cpu_unit "iu1_power5,iu2_power5" "power5iu") -(define_cpu_unit "lsu1_power5,lsu2_power5" "power5misc") -(define_cpu_unit "fpu1_power5,fpu2_power5" "power5fpu") -(define_cpu_unit "bpu_power5,cru_power5" "power5misc") -(define_cpu_unit "du1_power5,du2_power5,du3_power5,du4_power5,du5_power5" - "power5misc") - -(define_reservation "lsq_power5" - "(du1_power5,lsu1_power5)\ - |(du2_power5,lsu2_power5)\ - |(du3_power5,nothing,lsu2_power5)\ - |(du4_power5,nothing,lsu1_power5)") - -(define_reservation "iq_power5" - "(du1_power5,iu1_power5)\ - |(du2_power5,iu2_power5)\ - |(du3_power5,nothing,iu2_power5)\ - |(du4_power5,nothing,iu1_power5)") - -(define_reservation "fpq_power5" - "(du1_power5,fpu1_power5)\ - |(du2_power5,fpu2_power5)\ - |(du3_power5,nothing,fpu2_power5)\ - |(du4_power5,nothing,fpu1_power5)") - -; Dispatch slots are allocated in order conforming to program order. -(absence_set "du1_power5" "du2_power5,du3_power5,du4_power5,du5_power5") -(absence_set "du2_power5" "du3_power5,du4_power5,du5_power5") -(absence_set "du3_power5" "du4_power5,du5_power5") -(absence_set "du4_power5" "du5_power5") - - -; Load/store -(define_insn_reservation "power5-load" 4 ; 3 - (and (eq_attr "type" "load") - (eq_attr "cpu" "power5")) - "lsq_power5") - -(define_insn_reservation "power5-load-ext" 5 - (and (eq_attr "type" "load_ext") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,lsu1_power5,nothing,nothing,iu2_power5") - -(define_insn_reservation "power5-load-ext-update" 5 - (and (eq_attr "type" "load_ext_u") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5+du3_power5+du4_power5,\ - lsu1_power5+iu2_power5,nothing,nothing,iu2_power5") - -(define_insn_reservation "power5-load-ext-update-indexed" 5 - (and (eq_attr "type" "load_ext_ux") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5+du3_power5+du4_power5,\ - iu1_power5,lsu2_power5+iu1_power5,nothing,nothing,iu2_power5") - -(define_insn_reservation "power5-load-update-indexed" 3 - (and (eq_attr "type" "load_ux") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5+du3_power5+du4_power5,\ - iu1_power5,lsu2_power5+iu2_power5") - -(define_insn_reservation "power5-load-update" 4 ; 3 - (and (eq_attr "type" "load_u") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,lsu1_power5+iu2_power5") - -(define_insn_reservation "power5-fpload" 6 ; 5 - (and (eq_attr "type" "fpload") - (eq_attr "cpu" "power5")) - "lsq_power5") - -(define_insn_reservation "power5-fpload-update" 6 ; 5 - (and (eq_attr "type" "fpload_u,fpload_ux") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,lsu1_power5+iu2_power5") - -(define_insn_reservation "power5-store" 1 - (and (eq_attr "type" "store") - (eq_attr "cpu" "power5")) - "(du1_power5,lsu1_power5,iu1_power5)\ - |(du2_power5,lsu2_power5,iu2_power5)\ - |(du3_power5,lsu2_power5,nothing,iu2_power5)\ - |(du4_power5,lsu1_power5,nothing,iu1_power5)") - -(define_insn_reservation "power5-store-update" 1 - (and (eq_attr "type" "store_u") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,lsu1_power5+iu2_power5,iu1_power5") - -(define_insn_reservation "power5-store-update-indexed" 1 - (and (eq_attr "type" "store_ux") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5+du3_power5+du4_power5,\ - iu1_power5,lsu2_power5+iu2_power5,iu2_power5") - -(define_insn_reservation "power5-fpstore" 1 - (and (eq_attr "type" "fpstore") - (eq_attr "cpu" "power5")) - "(du1_power5,lsu1_power5,fpu1_power5)\ - |(du2_power5,lsu2_power5,fpu2_power5)\ - |(du3_power5,lsu2_power5,nothing,fpu2_power5)\ - |(du4_power5,lsu1_power5,nothing,fpu1_power5)") - -(define_insn_reservation "power5-fpstore-update" 1 - (and (eq_attr "type" "fpstore_u,fpstore_ux") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,lsu1_power5+iu2_power5,fpu1_power5") - - -; Integer latency is 2 cycles -(define_insn_reservation "power5-integer" 2 - (and (eq_attr "type" "integer") - (eq_attr "cpu" "power5")) - "iq_power5") - -(define_insn_reservation "power5-insert" 4 - (and (eq_attr "type" "insert_word") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,iu1_power5,nothing,iu2_power5") - -(define_insn_reservation "power5-cmp" 3 - (and (eq_attr "type" "cmp,fast_compare") - (eq_attr "cpu" "power5")) - "iq_power5") - -(define_insn_reservation "power5-compare" 2 - (and (eq_attr "type" "compare,delayed_compare") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,iu1_power5,iu2_power5") - -(define_bypass 4 "power5-compare" "power5-branch,power5-crlogical,power5-delayedcr,power5-mfcr,power5-mfcrf") - -(define_insn_reservation "power5-lmul-cmp" 7 - (and (eq_attr "type" "lmul_compare") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,iu1_power5*6,iu2_power5") - -(define_bypass 10 "power5-lmul-cmp" "power5-branch,power5-crlogical,power5-delayedcr,power5-mfcr,power5-mfcrf") - -(define_insn_reservation "power5-imul-cmp" 5 - (and (eq_attr "type" "imul_compare") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,iu1_power5*4,iu2_power5") - -(define_bypass 8 "power5-imul-cmp" "power5-branch,power5-crlogical,power5-delayedcr,power5-mfcr,power5-mfcrf") - -(define_insn_reservation "power5-lmul" 7 - (and (eq_attr "type" "lmul") - (eq_attr "cpu" "power5")) - "(du1_power5,iu1_power5*6)\ - |(du2_power5,iu2_power5*6)\ - |(du3_power5,iu2_power5*6)\ - |(du4_power5,iu2_power5*6)") -; |(du3_power5,nothing,iu2_power5*6)\ -; |(du4_power5,nothing,iu2_power5*6)") - -(define_insn_reservation "power5-imul" 5 - (and (eq_attr "type" "imul") - (eq_attr "cpu" "power5")) - "(du1_power5,iu1_power5*4)\ - |(du2_power5,iu2_power5*4)\ - |(du3_power5,iu2_power5*4)\ - |(du4_power5,iu1_power5*4)") -; |(du3_power5,nothing,iu2_power5*4)\ -; |(du4_power5,nothing,iu1_power5*4)") - -(define_insn_reservation "power5-imul3" 4 - (and (eq_attr "type" "imul2,imul3") - (eq_attr "cpu" "power5")) - "(du1_power5,iu1_power5*3)\ - |(du2_power5,iu2_power5*3)\ - |(du3_power5,iu2_power5*3)\ - |(du4_power5,iu1_power5*3)") -; |(du3_power5,nothing,iu2_power5*3)\ -; |(du4_power5,nothing,iu1_power5*3)") - - -; SPR move only executes in first IU. -; Integer division only executes in second IU. -(define_insn_reservation "power5-idiv" 36 - (and (eq_attr "type" "idiv") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,iu2_power5*35") - -(define_insn_reservation "power5-ldiv" 68 - (and (eq_attr "type" "ldiv") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,iu2_power5*67") - - -(define_insn_reservation "power5-mtjmpr" 3 - (and (eq_attr "type" "mtjmpr,mfjmpr") - (eq_attr "cpu" "power5")) - "du1_power5,bpu_power5") - - -; Branches take dispatch Slot 4. The presence_sets prevent other insn from -; grabbing previous dispatch slots once this is assigned. -(define_insn_reservation "power5-branch" 2 - (and (eq_attr "type" "jmpreg,branch") - (eq_attr "cpu" "power5")) - "(du5_power5\ - |du4_power5+du5_power5\ - |du3_power5+du4_power5+du5_power5\ - |du2_power5+du3_power5+du4_power5+du5_power5\ - |du1_power5+du2_power5+du3_power5+du4_power5+du5_power5),bpu_power5") - - -; Condition Register logical ops are split if non-destructive (RT != RB) -(define_insn_reservation "power5-crlogical" 2 - (and (eq_attr "type" "cr_logical") - (eq_attr "cpu" "power5")) - "du1_power5,cru_power5") - -(define_insn_reservation "power5-delayedcr" 4 - (and (eq_attr "type" "delayed_cr") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5,cru_power5,cru_power5") - -; 4 mfcrf (each 3 cyc, 1/cyc) + 3 fxu -(define_insn_reservation "power5-mfcr" 6 - (and (eq_attr "type" "mfcr") - (eq_attr "cpu" "power5")) - "du1_power5+du2_power5+du3_power5+du4_power5,\ - du1_power5+du2_power5+du3_power5+du4_power5+cru_power5,\ - cru_power5,cru_power5,cru_power5") - -; mfcrf (1 field) -(define_insn_reservation "power5-mfcrf" 3 - (and (eq_attr "type" "mfcrf") - (eq_attr "cpu" "power5")) - "du1_power5,cru_power5") - -; mtcrf (1 field) -(define_insn_reservation "power5-mtcr" 4 - (and (eq_attr "type" "mtcr") - (eq_attr "cpu" "power5")) - "du1_power5,iu1_power5") - -; Basic FP latency is 6 cycles -(define_insn_reservation "power5-fp" 6 - (and (eq_attr "type" "fp,dmul") - (eq_attr "cpu" "power5")) - "fpq_power5") - -(define_insn_reservation "power5-fpcompare" 5 - (and (eq_attr "type" "fpcompare") - (eq_attr "cpu" "power5")) - "fpq_power5") - -(define_insn_reservation "power5-sdiv" 33 - (and (eq_attr "type" "sdiv,ddiv") - (eq_attr "cpu" "power5")) - "(du1_power5,fpu1_power5*28)\ - |(du2_power5,fpu2_power5*28)\ - |(du3_power5,fpu2_power5*28)\ - |(du4_power5,fpu1_power5*28)") -; |(du3_power5,nothing,fpu2_power5*28)\ -; |(du4_power5,nothing,fpu1_power5*28)") - -(define_insn_reservation "power5-sqrt" 40 - (and (eq_attr "type" "ssqrt,dsqrt") - (eq_attr "cpu" "power5")) - "(du1_power5,fpu1_power5*35)\ - |(du2_power5,fpu2_power5*35)\ - |(du3_power5,fpu2_power5*35)\ - |(du4_power5,fpu2_power5*35)") -; |(du3_power5,nothing,fpu2_power5*35)\ -; |(du4_power5,nothing,fpu2_power5*35)") - diff --git a/gcc/testsuite/g++.dg/ext/attrib14.C b/gcc/testsuite/g++.dg/ext/attrib14.C deleted file mode 100644 index 3a819e01d82..00000000000 --- a/gcc/testsuite/g++.dg/ext/attrib14.C +++ /dev/null @@ -1,13 +0,0 @@ -// PR c++/13170 -// The bogus attribute is ignored, but was in TYPE_ATTRIBUTES during -// parsing of the class, causing some variants to have it and some not. - -struct __attribute__((bogus)) A -{ - virtual ~A(); - void foo(const A&); - void bar(const A&); -}; // { dg-warning "ignored" "" } - -void A::foo(const A&) {} -void A::bar(const A& a) { foo(a); } diff --git a/gcc/testsuite/g++.dg/template/unify5.C b/gcc/testsuite/g++.dg/template/unify5.C deleted file mode 100644 index 6928f1f8429..00000000000 --- a/gcc/testsuite/g++.dg/template/unify5.C +++ /dev/null @@ -1,10 +0,0 @@ - -// Copyright (C) 2004 Free Software Foundation, Inc. -// Contributed by Nathan Sidwell 1 Apr 2004 <nathan@codesourcery.com> -// Origin:Matt Austern <austern@apple.com> - -// PR:c++/14007 - -template <typename T> struct X {}; // #1 -template <typename T> struct X<const T>; //#2 -template struct X<int&>; //#3 diff --git a/gcc/testsuite/g++.dg/template/unify6.C b/gcc/testsuite/g++.dg/template/unify6.C deleted file mode 100644 index ee6a8ce0fdb..00000000000 --- a/gcc/testsuite/g++.dg/template/unify6.C +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (C) 2004 Free Software Foundation, Inc. -// Contributed by Nathan Sidwell 1 Apr 2004 <nathan@codesourcery.com> - -void Baz (); - -template <typename T> void Foo1 (T *); // #1 -template <typename T> void Foo1 (T const *a) {a (1);} // #2 - -template <typename T> T const *Foo2 (T *); - -template <typename T> void Foo3 (T *, T const * = 0); - -void Bar () -{ - Foo1 (&Baz); // #1 - - Foo2 (&Baz); - - Foo3 (&Baz); - - Foo3 (&Baz, &Baz); // { dg-error "no matching function" "" } -} diff --git a/gcc/testsuite/g++.dg/template/unify7.C b/gcc/testsuite/g++.dg/template/unify7.C deleted file mode 100644 index 3f7028b642f..00000000000 --- a/gcc/testsuite/g++.dg/template/unify7.C +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (C) 2004 Free Software Foundation, Inc. -// Contributed by Nathan Sidwell 1 Apr 2004 <nathan@codesourcery.com> - -// PR c++/3518 -template <typename T> void Foo (const T &); -template <typename T> void Baz (const T (*)()); - -int &f (); - -int main() -{ - Foo (f); - Baz (f); // { dg-error "no matching function" "" } -} diff --git a/gcc/testsuite/gcc.dg/20040219-1.c b/gcc/testsuite/gcc.dg/20040219-1.c deleted file mode 100644 index 1a277d6960b..00000000000 --- a/gcc/testsuite/gcc.dg/20040219-1.c +++ /dev/null @@ -1,74 +0,0 @@ -/* Testing save/restore of floating point caller-save registers, on ia64 - this resulted in bad code. Not all targets will use caller-save regs. */ - -/* { dg-do run } */ -/* { dg-options "-O2" } */ -/* { dg-options "-O2 -minline-float-divide-max-throughput" { target ia64-*-* } } */ - -/* Testing save/restore of floating point caller-save registers on ia64. */ - -extern void abort (void); - -double foo(double a, double b, double c) -{ - return (a+b+c); -} - -main () -{ - double f1, f2, f3, f4, f5, f6, f7, f8, f9,f10; - double f11,f12,f13,f14,f15,f16,f17,f18,f19,f20; - double f21,f22,f23,f24,f25,f26,f27,f28,f29,f30; - double x; - int i,j,k; - - f1 = 0.1; f2 = 0.2; f3 = 0.3; f4 = 0.4; f5 = 0.5; - f6 = 0.6; f7 = 0.7; f8 = 0.8; f9 = 0.9; f10 = 1.0; - f11 = 1.1; f12 = 1.2; f13 = 1.3; f14 = 1.4; f15 = 1.5; - f16 = 1.6; f17 = 1.7; f18 = 1.8; f19 = 1.9; f20 = 2.0; - f21 = 2.1; f22 = 2.2; f23 = 2.3; f24 = 2.4; f25 = 2.5; - f26 = 2.6; f27 = 2.7; f28 = 2.8; f29 = 2.9; f30 = 3.0; - - i = (int) foo(1.0,1.0,1.0); - while (i > 0) { - f1 = f2 / f3 * f30; - f2 = f3 / f4 * f30; - f3 = f4 / f5 * f30; - f4 = f5 / f6 * f30; - f5 = f6 / f7 * f30; - f6 = f7 / f8 * f30; - f7 = f8 / f9 * f30; - f8 = f9 / f10 * f30; - f9 = f10 / f11 * f30; - f10 = f11 / f12 * f30; - f11 = f12 / f13 * f30; - f12 = f13 / f14 * f25; - f13 = f14 / f15 * f30; - f14 = f15 / f16 * f30; - f15 = f16 / f17 * f30; - f16 = f17 / f18 * f30; - f17 = f18 / f19 * f30; - f18 = f19 / f20 * f30; - f19 = f20 / f21 * f30; - f20 = f21 / f22 * f20; - f21 = f22 / f23 * f30; - f22 = f23 / f24 * f30; - f23 = f24 / f25 * f30; - f24 = f25 / f26 * f30; - f25 = f26 / f27 * f30; - f26 = f27 / f28 * f30; - f27 = f28 / f29 * f30; - f28 = f29 / f30 * f30; - f29 = f30 / f1 * f30; - f30 = f1 / f2 * f30; - x = foo(f1,f2,f3); - i = i - 1; - } - x = (f1+f2+f3+f4+f5+f6+f7+f8+f9+f10) * - (f11+f12+f13+f14+f15+f16+f17+f18+f19+f20) * - (f21+f22+f23+f24+f25+f26+f27+f28+f29+f30); - - /* Exact value is not needed, on IA64 it is massively off. */ - if (x < 19503.0 || x > 19504.0) abort(); - return 0; -} diff --git a/gcc/testsuite/gcc.dg/20040310-1.c b/gcc/testsuite/gcc.dg/20040310-1.c deleted file mode 100644 index 104e98d0889..00000000000 --- a/gcc/testsuite/gcc.dg/20040310-1.c +++ /dev/null @@ -1,34 +0,0 @@ -/* This caused cc1 to segfault on s390x-ibm-linux - due to a bug in if_then_else_cond (combine.c). */ - -/* { dg-do compile } */ -/* { dg-options "-O1" } */ - -extern void use (unsigned int x); - -int main (void) -{ - union - { - unsigned int x; - unsigned long pad; - } A; - - struct - { - unsigned int x : 1; - } B; - - A.x = 1; - B.x = 1; - A.x /= B.x; - use (A.x); - - A.x = 1; - B.x = 1; - B.x /= A.x; - use (B.x); - - return 0; -} - diff --git a/gcc/testsuite/gcc.dg/compat/union-by-value-1_main.c b/gcc/testsuite/gcc.dg/compat/union-by-value-1_main.c deleted file mode 100644 index cd9065920f6..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-by-value-1_main.c +++ /dev/null @@ -1,13 +0,0 @@ -/* Test function argument passing. This was written when correcting - a deviation from the ABI on SPARC64 between 3.3 and 3.4. */ - -extern void union_by_value_1_x (void); -extern void exit (int); -int fails; - -int -main () -{ - union_by_value_1_x (); - exit (0); -} diff --git a/gcc/testsuite/gcc.dg/compat/union-by-value-1_x.c b/gcc/testsuite/gcc.dg/compat/union-by-value-1_x.c deleted file mode 100644 index a3efd4ed7d8..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-by-value-1_x.c +++ /dev/null @@ -1,180 +0,0 @@ -#include "compat-common.h" - -#define T(TYPE) \ -TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE; \ -TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE; \ -TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE; \ -TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE; \ - \ -extern void init##TYPE (TYPE *p, int i); \ -extern void checkg##TYPE (void); \ -extern void \ -test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \ - TYPE s5, TYPE s6, TYPE s7, TYPE s8, \ - TYPE s9, TYPE s10, TYPE s11, TYPE s12, \ - TYPE s13, TYPE s14, TYPE s15, TYPE s16); \ -extern void testva##TYPE (int n, ...); \ - \ -void \ -test2_##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \ - TYPE s5, TYPE s6, TYPE s7, TYPE s8) \ -{ \ - test##TYPE (s1, g2s##TYPE, s2, g4s##TYPE, \ - s3, g6s##TYPE, s4, g8s##TYPE, \ - s5, g10s##TYPE, s6, g12s##TYPE, \ - s7, g14s##TYPE, s8, g16s##TYPE); \ -} \ - \ -void \ -testit##TYPE (void) \ -{ \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" init: "); \ - init##TYPE ( &g1s##TYPE, 1); \ - init##TYPE ( &g2s##TYPE, 2); \ - init##TYPE ( &g3s##TYPE, 3); \ - init##TYPE ( &g4s##TYPE, 4); \ - init##TYPE ( &g5s##TYPE, 5); \ - init##TYPE ( &g6s##TYPE, 6); \ - init##TYPE ( &g7s##TYPE, 7); \ - init##TYPE ( &g8s##TYPE, 8); \ - init##TYPE ( &g9s##TYPE, 9); \ - init##TYPE (&g10s##TYPE, 10); \ - init##TYPE (&g11s##TYPE, 11); \ - init##TYPE (&g12s##TYPE, 12); \ - init##TYPE (&g13s##TYPE, 13); \ - init##TYPE (&g14s##TYPE, 14); \ - init##TYPE (&g15s##TYPE, 15); \ - init##TYPE (&g16s##TYPE, 16); \ - checkg##TYPE (); \ - DEBUG_NL; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" test: "); \ - test##TYPE (g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ - g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \ - DEBUG_NL; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" testva:"); \ - DEBUG_NL; \ - testva##TYPE (1, \ - g1s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (2, \ - g1s##TYPE, g2s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (3, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (4, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (5, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (6, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (7, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (8, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (9, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (10, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (11, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (12, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (13, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ - g13s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (14, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ - g13s##TYPE, g14s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (15, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ - g13s##TYPE, g14s##TYPE, g15s##TYPE); \ - DEBUG_NL; \ - testva##TYPE (16, \ - g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \ - g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \ - g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \ - g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \ - DEBUG_NL; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" test2:"); \ - test2_##TYPE (g1s##TYPE, g3s##TYPE, g5s##TYPE, g7s##TYPE, \ - g9s##TYPE, g11s##TYPE, g13s##TYPE, g15s##TYPE); \ - DEBUG_NL; \ -} - -#include "union-defs.h" -#include "union-check.h" - -T(Ucs) -T(Uci) -T(Ucl) -T(Ucll) -T(Usi) -T(Usl) -T(Usll) -T(Uil) -T(Uill) -T(Ulll) - -#undef T - -void -union_by_value_1_x () -{ -DEBUG_INIT - -#define T(TYPE) testit##TYPE (); - -T(Ucs) -T(Uci) -T(Ucl) -T(Ucll) -T(Usi) -T(Usl) -T(Usll) -T(Uil) -T(Uill) -T(Ulll) - -DEBUG_FINI - -if (fails != 0) - abort (); - -#undef T -} diff --git a/gcc/testsuite/gcc.dg/compat/union-by-value-1_y.c b/gcc/testsuite/gcc.dg/compat/union-by-value-1_y.c deleted file mode 100644 index b17613e9952..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-by-value-1_y.c +++ /dev/null @@ -1,92 +0,0 @@ -#include <stdarg.h> - -#include "compat-common.h" - -#ifdef SKIP_VA -const int test_va = 0; -#else -const int test_va = 1; -#endif - -#include "union-defs.h" -#include "union-init.h" - -#define T(TYPE) \ -extern void check##TYPE (TYPE x, int i); \ -extern TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE; \ -extern TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE; \ -extern TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE; \ -extern TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE; \ - \ -void \ -checkg##TYPE (void) \ -{ \ - check##TYPE ( g1s##TYPE, 1); \ - check##TYPE ( g2s##TYPE, 2); \ - check##TYPE ( g3s##TYPE, 3); \ - check##TYPE ( g4s##TYPE, 4); \ - check##TYPE ( g5s##TYPE, 5); \ - check##TYPE ( g6s##TYPE, 6); \ - check##TYPE ( g7s##TYPE, 7); \ - check##TYPE ( g8s##TYPE, 8); \ - check##TYPE ( g9s##TYPE, 9); \ - check##TYPE ( g10s##TYPE, 10); \ - check##TYPE ( g11s##TYPE, 11); \ - check##TYPE ( g12s##TYPE, 12); \ - check##TYPE ( g13s##TYPE, 13); \ - check##TYPE ( g14s##TYPE, 14); \ - check##TYPE ( g15s##TYPE, 15); \ - check##TYPE ( g16s##TYPE, 16); \ -} \ - \ -void \ -test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \ - TYPE s5, TYPE s6, TYPE s7, TYPE s8, \ - TYPE s9, TYPE s10, TYPE s11, TYPE s12, \ - TYPE s13, TYPE s14, TYPE s15, TYPE s16) \ -{ \ - check##TYPE (s1, 1); \ - check##TYPE (s2, 2); \ - check##TYPE (s3, 3); \ - check##TYPE (s4, 4); \ - check##TYPE (s5, 5); \ - check##TYPE (s6, 6); \ - check##TYPE (s7, 7); \ - check##TYPE (s8, 8); \ - check##TYPE (s9, 9); \ - check##TYPE (s10, 10); \ - check##TYPE (s11, 11); \ - check##TYPE (s12, 12); \ - check##TYPE (s13, 13); \ - check##TYPE (s14, 14); \ - check##TYPE (s15, 15); \ - check##TYPE (s16, 16); \ -} \ - \ -void \ -testva##TYPE (int n, ...) \ -{ \ - int i; \ - va_list ap; \ - if (test_va) \ - { \ - va_start (ap, n); \ - for (i = 0; i < n; i++) \ - { \ - TYPE t = va_arg (ap, TYPE); \ - check##TYPE (t, i+1); \ - } \ - va_end (ap); \ - } \ -} - -T(Ucs) -T(Uci) -T(Ucl) -T(Ucll) -T(Usi) -T(Usl) -T(Usll) -T(Uil) -T(Uill) -T(Ulll) diff --git a/gcc/testsuite/gcc.dg/compat/union-check.h b/gcc/testsuite/gcc.dg/compat/union-check.h deleted file mode 100644 index b5157814d58..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-check.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Function definitions that are used by multiple tests. */ - -#define CHECK_CHAR(TYPE) \ - void check##TYPE (TYPE p, int i) \ - { if (p.c != (char)i) DEBUG_CHECK } - -CHECK_CHAR(Ucs) -CHECK_CHAR(Uci) -CHECK_CHAR(Ucl) -CHECK_CHAR(Ucll) - - -#define CHECK_SHORT(TYPE) \ - void check##TYPE (TYPE p, int i) \ - { if (p.s != (short)i) DEBUG_CHECK } - -CHECK_SHORT(Usi) -CHECK_SHORT(Usl) -CHECK_SHORT(Usll) - - -#define CHECK_INT(TYPE) \ - void check##TYPE (TYPE p, int i) \ - { if (p.i != i) DEBUG_CHECK } - -CHECK_INT(Uil) -CHECK_INT(Uill) - - -#define CHECK_LONG(TYPE) \ - void check##TYPE (TYPE p, int i) \ - { if (p.l != (long)i) DEBUG_CHECK } - -CHECK_LONG(Ulll) diff --git a/gcc/testsuite/gcc.dg/compat/union-defs.h b/gcc/testsuite/gcc.dg/compat/union-defs.h deleted file mode 100644 index 887cd6da8e8..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-defs.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Type definitions that are used by multiple tests. */ - -typedef union { char c; short s; } Ucs; -typedef union { char c; int i; } Uci; -typedef union { char c; long l; } Ucl; -typedef union { char c; long long ll; } Ucll; - -typedef union { short s; int i; } Usi; -typedef union { short s; long l; } Usl; -typedef union { short s; long long ll; } Usll; - -typedef union { int i; long l; } Uil; -typedef union { int i; long long ll; } Uill; - -typedef union { long l; long long ll; } Ulll; diff --git a/gcc/testsuite/gcc.dg/compat/union-init.h b/gcc/testsuite/gcc.dg/compat/union-init.h deleted file mode 100644 index 5add7b4a800..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-init.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Function definitions that are used by multiple tests. */ - -#define INIT_CHAR(TYPE) \ - void init##TYPE (TYPE *p, int i) \ - { p->c = (char)i; } - -INIT_CHAR(Ucs) -INIT_CHAR(Uci) -INIT_CHAR(Ucl) -INIT_CHAR(Ucll) - - -#define INIT_SHORT(TYPE) \ - void init##TYPE (TYPE *p, int i) \ - { p->s = (short)i; } - -INIT_SHORT(Usi) -INIT_SHORT(Usl) -INIT_SHORT(Usll) - - -#define INIT_INT(TYPE) \ - void init##TYPE (TYPE *p, int i) \ - { p->i = i; } - -INIT_INT(Uil) -INIT_INT(Uill) - - -#define INIT_LONG(TYPE) \ - void init##TYPE (TYPE *p, int i) \ - { p->l = (long)i; } - -INIT_LONG(Ulll) diff --git a/gcc/testsuite/gcc.dg/compat/union-return-1_main.c b/gcc/testsuite/gcc.dg/compat/union-return-1_main.c deleted file mode 100644 index edf15166b95..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-return-1_main.c +++ /dev/null @@ -1,13 +0,0 @@ -/* Test function return values. This was written when correcting - a deviation from the ABI on SPARC64 between 3.3 and 3.4. */ - -extern void union_return_1_x (void); -extern void exit (int); -int fails; - -int -main () -{ - union_return_1_x (); - exit (0); -} diff --git a/gcc/testsuite/gcc.dg/compat/union-return-1_x.c b/gcc/testsuite/gcc.dg/compat/union-return-1_x.c deleted file mode 100644 index 761f000aa11..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-return-1_x.c +++ /dev/null @@ -1,124 +0,0 @@ -#include "compat-common.h" - -#ifdef SKIP_VA -const int test_va = 0; -#else -const int test_va = 1; -#endif - -#define T(TYPE) \ -TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \ -TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \ -TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \ -TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \ - \ -extern void init##TYPE (TYPE *p, int i); \ -extern void checkg##TYPE (void); \ -extern TYPE test0##TYPE (void); \ -extern TYPE test1##TYPE (TYPE); \ -extern TYPE testva##TYPE (int n, ...); \ - \ -void \ -testit##TYPE (void) \ -{ \ - TYPE rslt; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" init: "); \ - init##TYPE (&g01##TYPE, 1); \ - init##TYPE (&g02##TYPE, 2); \ - init##TYPE (&g03##TYPE, 3); \ - init##TYPE (&g04##TYPE, 4); \ - init##TYPE (&g05##TYPE, 5); \ - init##TYPE (&g06##TYPE, 6); \ - init##TYPE (&g07##TYPE, 7); \ - init##TYPE (&g08##TYPE, 8); \ - init##TYPE (&g09##TYPE, 9); \ - init##TYPE (&g10##TYPE, 10); \ - init##TYPE (&g11##TYPE, 11); \ - init##TYPE (&g12##TYPE, 12); \ - init##TYPE (&g13##TYPE, 13); \ - init##TYPE (&g14##TYPE, 14); \ - init##TYPE (&g15##TYPE, 15); \ - init##TYPE (&g16##TYPE, 16); \ - checkg##TYPE (); \ - DEBUG_NL; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" test0: "); \ - rslt = test0##TYPE (); \ - check##TYPE (rslt, 1); \ - DEBUG_NL; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" test1: "); \ - rslt = test1##TYPE (g01##TYPE); \ - check##TYPE (rslt, 1); \ - if (test_va) \ - { \ - DEBUG_NL; \ - DEBUG_FPUTS (#TYPE); \ - DEBUG_FPUTS (" testva: "); \ - rslt = testva##TYPE (1, g01##TYPE); \ - check##TYPE (rslt, 1); \ - rslt = testva##TYPE (5, g01##TYPE, g02##TYPE, \ - g03##TYPE, g04##TYPE, \ - g05##TYPE); \ - check##TYPE (rslt, 5); \ - rslt = testva##TYPE (9, g01##TYPE, g02##TYPE, \ - g03##TYPE, g04##TYPE, \ - g05##TYPE, g06##TYPE, \ - g07##TYPE, g08##TYPE, \ - g09##TYPE); \ - check##TYPE (rslt, 9); \ - rslt = testva##TYPE (16, g01##TYPE, g02##TYPE, \ - g03##TYPE, g04##TYPE, \ - g05##TYPE, g06##TYPE, \ - g07##TYPE, g08##TYPE, \ - g09##TYPE, g10##TYPE, \ - g11##TYPE, g12##TYPE, \ - g13##TYPE, g14##TYPE, \ - g15##TYPE, g16##TYPE); \ - check##TYPE (rslt, 16); \ - } \ - DEBUG_NL; \ -} - -#include "union-defs.h" -#include "union-check.h" - -T(Ucs) -T(Uci) -T(Ucl) -T(Ucll) -T(Usi) -T(Usl) -T(Usll) -T(Uil) -T(Uill) -T(Ulll) - -#undef T - -void -union_return_1_x () -{ -DEBUG_INIT - -#define T(TYPE) testit##TYPE (); - -T(Ucs) -T(Uci) -T(Ucl) -T(Ucll) -T(Usi) -T(Usl) -T(Usll) -T(Uil) -T(Uill) -T(Ulll) - -DEBUG_FINI - -if (fails != 0) - abort (); - -#undef T -} diff --git a/gcc/testsuite/gcc.dg/compat/union-return-1_y.c b/gcc/testsuite/gcc.dg/compat/union-return-1_y.c deleted file mode 100644 index 9eaa9777e0a..00000000000 --- a/gcc/testsuite/gcc.dg/compat/union-return-1_y.c +++ /dev/null @@ -1,71 +0,0 @@ -#include <stdarg.h> - -#include "compat-common.h" - -#include "union-defs.h" -#include "union-init.h" - -#define T(TYPE) \ -extern TYPE g01##TYPE, g02##TYPE, g03##TYPE, g04##TYPE; \ -extern TYPE g05##TYPE, g06##TYPE, g07##TYPE, g08##TYPE; \ -extern TYPE g09##TYPE, g10##TYPE, g11##TYPE, g12##TYPE; \ -extern TYPE g13##TYPE, g14##TYPE, g15##TYPE, g16##TYPE; \ - \ -extern void check##TYPE (TYPE x, int i); \ - \ -void \ -checkg##TYPE (void) \ -{ \ - check##TYPE (g01##TYPE, 1); \ - check##TYPE (g02##TYPE, 2); \ - check##TYPE (g03##TYPE, 3); \ - check##TYPE (g04##TYPE, 4); \ - check##TYPE (g05##TYPE, 5); \ - check##TYPE (g06##TYPE, 6); \ - check##TYPE (g07##TYPE, 7); \ - check##TYPE (g08##TYPE, 8); \ - check##TYPE (g09##TYPE, 9); \ - check##TYPE (g10##TYPE, 10); \ - check##TYPE (g11##TYPE, 11); \ - check##TYPE (g12##TYPE, 12); \ - check##TYPE (g13##TYPE, 13); \ - check##TYPE (g14##TYPE, 14); \ - check##TYPE (g15##TYPE, 15); \ - check##TYPE (g16##TYPE, 16); \ -} \ - \ -TYPE \ -test0##TYPE (void) \ -{ \ - return g01##TYPE; \ -} \ - \ -TYPE \ -test1##TYPE (TYPE x01) \ -{ \ - return x01; \ -} \ - \ -TYPE \ -testva##TYPE (int n, ...) \ -{ \ - int i; \ - TYPE rslt; \ - va_list ap; \ - va_start (ap, n); \ - for (i = 0; i < n; i++) \ - rslt = va_arg (ap, TYPE); \ - va_end (ap); \ - return rslt; \ -} - -T(Ucs) -T(Uci) -T(Ucl) -T(Ucll) -T(Usi) -T(Usl) -T(Usll) -T(Uil) -T(Uill) -T(Ulll) diff --git a/libstdc++-v3/config/allocator/pool_allocator_base.h b/libstdc++-v3/config/allocator/pool_allocator_base.h deleted file mode 100644 index 77c74b2d512..00000000000 --- a/libstdc++-v3/config/allocator/pool_allocator_base.h +++ /dev/null @@ -1,37 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT 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 along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -#ifndef _CXX_ALLOCATOR_H -#define _CXX_ALLOCATOR_H 1 - -// Define new_allocator as the base class to std::allocator. -#include <ext/pool_allocator.h> -#define ___glibcxx_base_allocator __gnu_cxx::__pool_alloc - -#endif diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc deleted file mode 100644 index f187307afab..00000000000 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc +++ /dev/null @@ -1,59 +0,0 @@ -// 2004-04-07 Paolo Carlini <pcarlini@suse.de> - -// Copyright (C) 2004 Free Software Foundation -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT 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 along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// 22.2.5.1.1 time_get members - -#include <locale> -#include <sstream> -#include <testsuite_hooks.h> - -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - typedef istreambuf_iterator<char> iterator_type; - - const ios_base::iostate good = ios_base::goodbit; - ios_base::iostate errorstate = good; - - // basic construction - locale loc_c = locale::classic(); - - iterator_type end; - istringstream iss; - iss.imbue(loc_c); - const time_get<char>& tim_get = - use_facet<time_get<char> >(iss.getloc()); - - iss.str("Jul"); - iterator_type is_it01(iss); - tm time01; - errorstate = good; - tim_get.get_monthname(is_it01, end, iss, errorstate, &time01); - VERIFY( time01.tm_mon == 6 ); - VERIFY( errorstate == ios_base::eofbit ); -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc deleted file mode 100644 index dd1c393ac15..00000000000 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc +++ /dev/null @@ -1,59 +0,0 @@ -// 2004-04-07 Paolo Carlini <pcarlini@suse.de> - -// Copyright (C) 2004 Free Software Foundation -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT 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 along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// 22.2.5.1.1 time_get members - -#include <locale> -#include <sstream> -#include <testsuite_hooks.h> - -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - typedef istreambuf_iterator<wchar_t> iterator_type; - - const ios_base::iostate good = ios_base::goodbit; - ios_base::iostate errorstate = good; - - // basic construction - locale loc_c = locale::classic(); - - iterator_type end; - wistringstream iss; - iss.imbue(loc_c); - const time_get<wchar_t>& tim_get = - use_facet<time_get<wchar_t> >(iss.getloc()); - - iss.str(L"Jul"); - iterator_type is_it01(iss); - tm time01; - errorstate = good; - tim_get.get_monthname(is_it01, end, iss, errorstate, &time01); - VERIFY( time01.tm_mon == 6 ); - VERIFY( errorstate == ios_base::eofbit ); -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc deleted file mode 100644 index 0b7369e12b1..00000000000 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc +++ /dev/null @@ -1,67 +0,0 @@ -// 2004-04-16 Petur Runolfsson <peturr02@ru.is> - -// Copyright (C) 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT 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 along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// 27.8.1.4 Overridden virtual functions - -#include <fstream> -#include <locale> -#include <testsuite_hooks.h> - -class Buf : public std::filebuf -{ -protected: - virtual int_type - overflow(int_type c = traits_type::eof()) - { - return traits_type::eq_int_type(c, traits_type::eof()) ? - traits_type::eof() : std::filebuf::overflow(c); - } -}; - -// libstdc++/14975 -void test01() -{ - using namespace std; - bool test __attribute__((unused)) = true; - - Buf fb; - locale loc_us = __gnu_test::try_named_locale("en_US"); - fb.pubimbue(loc_us); - fb.open("tmp_14975-1", ios_base::out); - - try - { - fb.sputc('a'); - fb.sputc('b'); - fb.pubimbue(locale::classic()); - fb.sputc('c'); - fb.pubsync(); - fb.close(); - } - catch (std::exception&) - { - } -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc deleted file mode 100644 index 8789b9aa4d8..00000000000 --- a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc +++ /dev/null @@ -1,83 +0,0 @@ -// 2004-04-16 Petur Runolfsson <peturr02@ru.is> - -// Copyright (C) 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT 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 along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <fstream> -#include <locale> -#include <unistd.h> -#include <signal.h> -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <testsuite_hooks.h> - -// libstdc++/14975 -void test01() -{ - using namespace std; - using namespace __gnu_test; - bool test __attribute__((unused)) = true; - - locale loc_us = try_named_locale("en_US"); - - const char* name = "tmp_14975-2"; - - signal(SIGPIPE, SIG_IGN); - - unlink(name); - try_mkfifo(name, S_IRWXU); - - int child = fork(); - VERIFY( child != -1 ); - - if (child == 0) - { - filebuf fbin; - fbin.open(name, ios_base::in); - sleep(2); - exit(0); - } - - wfilebuf fb; - fb.pubimbue(loc_us); - sleep(1); - wfilebuf* ret = fb.open(name, ios_base::out); - VERIFY( ret != NULL ); - VERIFY( fb.is_open() ); - - sleep(3); - - try - { - fb.sputc(L'a'); - fb.sputc(L'b'); - fb.pubimbue(locale::classic()); - fb.sputc(L'c'); - fb.close(); - } - catch (std::exception&) - { - } -} - -int main() -{ - test01(); - return 0; -} diff --git a/libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc b/libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc deleted file mode 100644 index d40e0c25130..00000000000 --- a/libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright (C) 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT 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 along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -#include <cstdio> -#include <fstream> -#include <testsuite_performance.h> - -// libstdc++/11378 -int main() -{ - using namespace std; - using namespace __gnu_test; - - time_counter time; - resource_counter resource; - - const int iterations = 500000; - const int chunksize = 100; - - char* chunk = new char[chunksize]; - - // C - FILE* file = fopen("tmp", "w+"); - setvbuf(file, 0, _IONBF, 0); - start_counters(time, resource); - for (int i = 0; i < iterations; ++i) - fwrite(chunk, 1, chunksize, file); - stop_counters(time, resource); - fclose(file); - report_performance(__FILE__, "C", time, resource); - clear_counters(time, resource); - - // C unlocked - file = fopen("tmp", "w+"); - setvbuf(file, 0, _IONBF, 0); - start_counters(time, resource); - for (int i = 0; i < iterations; ++i) - fwrite_unlocked(chunk, 1, chunksize, file); - stop_counters(time, resource); - fclose(file); - report_performance(__FILE__, "C unlocked", time, resource); - clear_counters(time, resource); - - // C++ - filebuf buf; - buf.pubsetbuf(0, 0); - buf.open("tmp", ios_base::out | ios_base::in | ios_base::trunc); - start_counters(time, resource); - for (int i = 0; i < iterations; ++i) - buf.sputn(chunk, chunksize); - stop_counters(time, resource); - report_performance(__FILE__, "C++", time, resource); - - unlink("tmp"); - delete [] chunk; - - return 0; -} |