* [Ada] Fix CodePeer warnings in GNAT sources
@ 2022-07-13 10:02 Pierre-Marie de Rodat
0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2022-07-13 10:02 UTC (permalink / raw)
To: gcc-patches; +Cc: Justin Squirek
[-- Attachment #1: Type: text/plain, Size: 504 bytes --]
This patch fixes various redundant constructs or uninitialized variables
identified by CodePeer in the GNAT frontend and runtime sources.
Tested on x86_64-pc-linux-gnu, committed on trunk
gcc/ada/
* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add default
initialization for Stmts.
* sem_ch12.adb (Analyze_Associations): Add default
initialization for Match.
* libgnat/a-ztenau.adb (Scan_Enum_Lit): Remove duplicated
boolean test.
* libgnat/g-spipat.adb (XMatch): Combine duplicated cases.
[-- Attachment #2: patch.diff --]
[-- Type: text/x-diff, Size: 7597 bytes --]
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -5175,7 +5175,7 @@ package body Exp_Ch6 is
Exp : Node_Id;
HSS : Node_Id;
Result : Node_Id;
- Stmts : List_Id;
+ Stmts : List_Id := No_List;
Return_Stmt : Node_Id := Empty;
-- Force initialization to facilitate static analysis
diff --git a/gcc/ada/libgnat/a-ztenau.adb b/gcc/ada/libgnat/a-ztenau.adb
--- a/gcc/ada/libgnat/a-ztenau.adb
+++ b/gcc/ada/libgnat/a-ztenau.adb
@@ -303,8 +303,6 @@ package body Ada.Wide_Wide_Text_IO.Enumeration_Aux is
exit when
Is_Character (WC)
- and then
- not Is_Letter (To_Character (WC))
and then
not Is_Letter (To_Character (WC))
and then
diff --git a/gcc/ada/libgnat/g-spipat.adb b/gcc/ada/libgnat/g-spipat.adb
--- a/gcc/ada/libgnat/g-spipat.adb
+++ b/gcc/ada/libgnat/g-spipat.adb
@@ -3961,7 +3961,7 @@ package body GNAT.Spitbol.Patterns is
-- Any (one character case)
- when PC_Any_CH =>
+ when PC_Any_CH | PC_Char =>
if Cursor < Length
and then Subject (Cursor + 1) = Node.Char
then
@@ -4103,9 +4103,10 @@ package body GNAT.Spitbol.Patterns is
Pop_Region;
goto Succeed;
- -- Assign on match. This node sets up for the eventual assignment
+ -- Write/assign on match. This node sets up for the eventual write
+ -- or assignment.
- when PC_Assign_OnM =>
+ when PC_Assign_OnM | PC_Write_OnM =>
Stack (Stack_Base - 1).Node := Node;
Push (CP_Assign'Access);
Pop_Region;
@@ -4144,9 +4145,9 @@ package body GNAT.Spitbol.Patterns is
Push (Node);
goto Succeed;
- -- Break (one character case)
+ -- Break & BreakX (one character case)
- when PC_Break_CH =>
+ when PC_Break_CH | PC_BreakX_CH =>
while Cursor < Length loop
if Subject (Cursor + 1) = Node.Char then
goto Succeed;
@@ -4157,9 +4158,9 @@ package body GNAT.Spitbol.Patterns is
goto Fail;
- -- Break (character set case)
+ -- Break & BreakX (character set case)
- when PC_Break_CS =>
+ when PC_Break_CS | PC_BreakX_CS =>
while Cursor < Length loop
if Is_In (Subject (Cursor + 1), Node.CS) then
goto Succeed;
@@ -4170,9 +4171,9 @@ package body GNAT.Spitbol.Patterns is
goto Fail;
- -- Break (string function case)
+ -- Break & BreakX (string function case)
- when PC_Break_VF => declare
+ when PC_Break_VF | PC_BreakX_VF => declare
U : constant VString := Node.VF.all;
S : Big_String_Access;
L : Natural;
@@ -4191,77 +4192,9 @@ package body GNAT.Spitbol.Patterns is
goto Fail;
end;
- -- Break (string pointer case)
+ -- Break & BreakX (string pointer case)
- when PC_Break_VP => declare
- U : constant VString := Node.VP.all;
- S : Big_String_Access;
- L : Natural;
-
- begin
- Get_String (U, S, L);
-
- while Cursor < Length loop
- if Is_In (Subject (Cursor + 1), S (1 .. L)) then
- goto Succeed;
- else
- Cursor := Cursor + 1;
- end if;
- end loop;
-
- goto Fail;
- end;
-
- -- BreakX (one character case)
-
- when PC_BreakX_CH =>
- while Cursor < Length loop
- if Subject (Cursor + 1) = Node.Char then
- goto Succeed;
- else
- Cursor := Cursor + 1;
- end if;
- end loop;
-
- goto Fail;
-
- -- BreakX (character set case)
-
- when PC_BreakX_CS =>
- while Cursor < Length loop
- if Is_In (Subject (Cursor + 1), Node.CS) then
- goto Succeed;
- else
- Cursor := Cursor + 1;
- end if;
- end loop;
-
- goto Fail;
-
- -- BreakX (string function case)
-
- when PC_BreakX_VF => declare
- U : constant VString := Node.VF.all;
- S : Big_String_Access;
- L : Natural;
-
- begin
- Get_String (U, S, L);
-
- while Cursor < Length loop
- if Is_In (Subject (Cursor + 1), S (1 .. L)) then
- goto Succeed;
- else
- Cursor := Cursor + 1;
- end if;
- end loop;
-
- goto Fail;
- end;
-
- -- BreakX (string pointer case)
-
- when PC_BreakX_VP => declare
+ when PC_Break_VP | PC_BreakX_VP => declare
U : constant VString := Node.VP.all;
S : Big_String_Access;
L : Natural;
@@ -4288,18 +4221,6 @@ package body GNAT.Spitbol.Patterns is
Cursor := Cursor + 1;
goto Succeed;
- -- Character (one character string)
-
- when PC_Char =>
- if Cursor < Length
- and then Subject (Cursor + 1) = Node.Char
- then
- Cursor := Cursor + 1;
- goto Succeed;
- else
- goto Fail;
- end if;
-
-- End of Pattern
when PC_EOP =>
@@ -4941,15 +4862,6 @@ package body GNAT.Spitbol.Patterns is
Subject (Stack (Stack_Base - 1).Cursor + 1 .. Cursor));
Pop_Region;
goto Succeed;
-
- -- Write on match. This node sets up for the eventual write
-
- when PC_Write_OnM =>
- Stack (Stack_Base - 1).Node := Node;
- Push (CP_Assign'Access);
- Pop_Region;
- Assign_OnM := True;
- goto Succeed;
end case;
-- We are NOT allowed to fall though this case statement, since every
@@ -5445,20 +5357,10 @@ package body GNAT.Spitbol.Patterns is
goto Fail;
end if;
- -- Arbno_S (simple Arbno initialize). This is the node that
- -- initiates the match of a simple Arbno structure.
-
- when PC_Arbno_S =>
- Dout (Img (Node) &
- "setting up Arbno alternative " & Img (Node.Alt));
- Push (Node.Alt);
- Node := Node.Pthen;
- goto Match;
-
- -- Arbno_X (Arbno initialize). This is the node that initiates
- -- the match of a complex Arbno structure.
+ -- Arbno_S/X (simple and complex Arbno initialize). This is the node
+ -- that initiates the match of a simple or complex Arbno structure.
- when PC_Arbno_X =>
+ when PC_Arbno_S | PC_Arbno_X =>
Dout (Img (Node) &
"setting up Arbno alternative " & Img (Node.Alt));
Push (Node.Alt);
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -1113,7 +1113,7 @@ package body Sem_Ch12 is
Analyzed_Formal : Node_Id;
First_Named : Node_Id := Empty;
Formal : Node_Id;
- Match : Node_Id;
+ Match : Node_Id := Empty;
Named : Node_Id;
Saved_Formal : Node_Id;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-07-13 10:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-13 10:02 [Ada] Fix CodePeer warnings in GNAT sources Pierre-Marie de Rodat
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).