2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-18 06:40:25 +08:00

2014-02-06 Sergey Rybin <rybin@adacore.com frybin>

* gnat_ugn.texi, vms_data.ads: Add documentation of -j option for
	gnatmetric.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* exp_ch4.adb (Expand_N_Shift_Left): Handle shift counts greater
	than the word size when operating in Modify_Tree_For_C mode.
	* sinfo.ads: Add documentation section on Modify_Tree_For_C mode.

2014-02-06  Robert Dewar  <dewar@adacore.com>

	* erroutc.adb (Warning_Specifically_Suppressed.Matches):
	compare is case insensitive.
	* gnat_rm.texi: Document that string compare for Warnings Off
	is now case insensitive.

From-SVN: r207546
This commit is contained in:
Arnaud Charlet 2014-02-06 11:21:40 +01:00
parent 5216b599a6
commit e09a559856
7 changed files with 137 additions and 5 deletions

@ -1,3 +1,21 @@
2014-02-06 Sergey Rybin <rybin@adacore.com frybin>
* gnat_ugn.texi, vms_data.ads: Add documentation of -j option for
gnatmetric.
2014-02-06 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb (Expand_N_Shift_Left): Handle shift counts greater
than the word size when operating in Modify_Tree_For_C mode.
* sinfo.ads: Add documentation section on Modify_Tree_For_C mode.
2014-02-06 Robert Dewar <dewar@adacore.com>
* erroutc.adb (Warning_Specifically_Suppressed.Matches):
compare is case insensitive.
* gnat_rm.texi: Document that string compare for Warnings Off
is now case insensitive.
2014-02-06 Eric Botcazou <ebotcazou@adacore.com>
* gnat_rm.texi: Small wording tweak.

@ -1347,6 +1347,7 @@ package body Erroutc is
function Matches (S : String; P : String) return Boolean;
-- Returns true if the String S patches the pattern P, which can contain
-- wild card chars (*). The entire pattern must match the entire string.
-- Case is ignored in the comparison (so X matches x).
-------------
-- Matches --
@ -1398,7 +1399,7 @@ package body Erroutc is
-- Dealt with end of string and *, advance if we have a match
elsif S (SPtr) = P (PPtr) then
elsif Fold_Lower (S (SPtr)) = Fold_Lower (P (PPtr)) then
SPtr := SPtr + 1;
PPtr := PPtr + 1;

@ -8787,6 +8787,7 @@ package body Exp_Ch4 is
Make_Op_Shift_Left (Loc,
Left_Opnd => Left_Opnd (N),
Right_Opnd => Right_Opnd (N)),
Right_Opnd =>
Make_Op_Shift_Right (Loc,
Left_Opnd => Duplicate_Subexpr_No_Checks (Left_Opnd (N)),
@ -8839,6 +8840,7 @@ package body Exp_Ch4 is
Make_Op_Shift_Right (Loc,
Left_Opnd => Left_Opnd (N),
Right_Opnd => Right_Opnd (N)),
Right_Opnd =>
Make_Op_Shift_Left (Loc,
Left_Opnd => Duplicate_Subexpr_No_Checks (Left_Opnd (N)),
@ -8857,9 +8859,64 @@ package body Exp_Ch4 is
-- Expand_N_Op_Shift_Left --
----------------------------
-- Note: nothing in this routine depends on left as opposed to right shifts
-- so we share the routine for expanding shift right operations.
procedure Expand_N_Op_Shift_Left (N : Node_Id) is
begin
Binary_Op_Validity_Checks (N);
-- If we are in Modify_Tree_For_C mode, then ensure that the right
-- operand is not greater than the word size (since that would not
-- be defined properly by the corresponding C shift operator).
if Modify_Tree_For_C then
declare
Right : constant Node_Id := Right_Opnd (N);
Loc : constant Source_Ptr := Sloc (Right);
Typ : constant Entity_Id := Etype (N);
Siz : constant Uint := Esize (Typ);
Orig : Node_Id;
OK : Boolean;
Lo : Uint;
Hi : Uint;
begin
if Compile_Time_Known_Value (Right) then
if Expr_Value (Right) >= Siz then
Rewrite (N, Make_Integer_Literal (Loc, 0));
Analyze_And_Resolve (N, Typ);
end if;
-- Not compile time known, find range
else
Determine_Range (Right, OK, Lo, Hi, Assume_Valid => True);
-- Nothing to do if known to be OK range, otherwise expand
if not OK or else Hi >= Siz then
-- Prevent recursion on copy of shift node
Orig := Relocate_Node (N);
Set_Analyzed (Orig);
-- Now do the rewrite
Rewrite (N,
Make_If_Expression (Loc,
Expressions => New_List (
Make_Op_Ge (Loc,
Left_Opnd => Duplicate_Subexpr_Move_Checks (Right),
Right_Opnd => Make_Integer_Literal (Loc, Siz)),
Make_Integer_Literal (Loc, 0),
Orig)));
Analyze_And_Resolve (N, Typ);
end if;
end if;
end;
end if;
end Expand_N_Op_Shift_Left;
-----------------------------
@ -8868,7 +8925,9 @@ package body Exp_Ch4 is
procedure Expand_N_Op_Shift_Right (N : Node_Id) is
begin
Binary_Op_Validity_Checks (N);
-- Share shift left circuit
Expand_N_Op_Shift_Left (N);
end Expand_N_Op_Shift_Right;
----------------------------------------
@ -8892,6 +8951,10 @@ package body Exp_Ch4 is
-- Note: in almost all C compilers it would work to just shift a
-- signed integer right, but it's undefined and we cannot rely on it.
-- Note: the above works fine for shift counts greater than or equal
-- to the word size, since in this case (not (Shift_Right (Mask, bits)))
-- generates all 1'bits.
-- What about non-binary modulus ???
declare

@ -7435,6 +7435,7 @@ the message. For example, you can use
message @code{warning: 960 bits of "a" unused}. No other regular
expression notations are permitted. All characters other than asterisk in
these three specific cases are treated as literal characters in the match.
The match is case insensitive, for example XYZ matches xyz.
The above use of patterns to match the message applies only to warning
messages generated by the front end. This form of the pragma with a

@ -6497,7 +6497,8 @@ an inherited operation must carry an overriding indicator.
@emph{Check pragma casing.}
Pragma names must be written in mixed case, that is, the
initial letter and any letter following an underscore must be uppercase.
All other letters must be lowercase.
All other letters must be lowercase. An exception is that SPARK_Mode is
allowed as an alternative for Spark_Mode.
@item ^r^REFERENCES^
@emph{Check references.}
@ -16622,14 +16623,21 @@ line breaks. You can use this switch more than once in the same call to
@command{gnatmetric}. You also can combine this switch with
an explicit list of files.
@item ^-j^/PROCESSES=^@var{n}
@cindex @option{^-j^/PROCESSES^} (@command{gnatmetric})
Use @var{n} processes to carry out the tree creations (internal representations
of the argument sources). On a multiprocessor machine this speeds up processing
of big sets of argument sources. If @var{n} is 0, then the maximum number of
parallel tree creations is the number of core processors on the platform.
@item ^-v^/VERBOSE^
@cindex @option{^-v^/VERBOSE^} (@code{gnatmetric})
@cindex @option{^-v^/VERBOSE^} (@command{gnatmetric})
Verbose mode;
@command{gnatmetric} generates version information and then
a trace of sources being processed.
@item ^-q^/QUIET^
@cindex @option{^-q^/QUIET^} (@code{gnatmetric})
@cindex @option{^-q^/QUIET^} (@command{gnatmetric})
Quiet mode.
@end table

@ -614,6 +614,28 @@ package Sinfo is
-- refers to a node or is posted on its source location, and has the
-- effect of inhibiting further messages involving this same node.
-----------------------
-- Modify_Tree_For_C --
-----------------------
-- If the flag Opt.Modify_Tree_For_C is set True, then the tree is modified
-- in ways that help match the semantics better with C, easing the task of
-- interfacing to C code generators (other than GCC, where the work is done
-- in gigi, and there is no point in changing that), and also making life
-- easier for Cprint in generating C source code.
-- The current modifications implemented are as follows:
-- N_Op_Rotate_Left, N_Op_Rotate_Right, N_Shift_Right_Arithmetic nodes
-- are eliminated from the tree (since these operations do not exist in
-- C), and the operations are rewritten in terms of logical shifts and
-- other logical operations that do exist in C. See Exp_Ch4 expansion
-- routines for these operators for details of the transformations made.
-- The right operand of N_Op_Shift_Right and N_Op_Shift_Left is always
-- less than the word size (since other values are not well-defined in
-- C). This is done using an explicit test if necessary.
------------------------------------
-- Description of Semantic Fields --
------------------------------------
@ -7145,6 +7167,12 @@ package Sinfo is
-- plus fields for expression
-- Shift_Count_OK (Flag4-Sem)
-- Note: N_Op_Rotate_Left, N_Op_Rotate_Right, N_Shift_Right_Arithmetic
-- never appear in the expanded tree if Modify_Tree_For_C mode is set.
-- Note: For N_Op_Shift_Left and N_Op_Shift_Right, the right operand is
-- always less than the word size if Modify_Tree_For_C mode is set.
--------------------------
-- Obsolescent Features --
--------------------------

@ -5798,6 +5798,18 @@ package VMS_Data is
-- at the main project file will be parsed before the invocation of the
-- binder.
S_Metric_Processes : aliased constant S := "/PROCESSES=#" &
"-j#";
-- /NOPROCESSES (D)
-- /PROCESSES=NNN
--
-- Use NNN processes to carry out the tree creations (internal
-- representations of the argument sources). On a multiprocessor machine
-- this speeds up processing of big sets of argument sources. If NNN is 0,
-- then the maximum number of parallel tree creations is the number of
-- core processors on the platform.
S_Metric_Quiet : aliased constant S := "/QUIET " &
"-q";
-- /NOQUIET (D)
@ -5871,6 +5883,7 @@ package VMS_Data is
S_Metric_No_Local 'Access,
S_Metric_No_Static_Loop 'Access,
S_Metric_Project 'Access,
S_Metric_Processes 'Access,
S_Metric_Quiet 'Access,
S_Metric_Suffix 'Access,
S_Metric_Subdirs 'Access,