aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRonan Desplanques <desplanques@adacore.com>2024-02-14 15:12:15 +0100
committerMarc Poulhiès <poulhies@adacore.com>2024-05-14 10:19:57 +0200
commitfaf462cfe686228113fc9d968809dd4f40395dde (patch)
tree5cbc8183d17cdc513be815148de64e44782cafcb /gcc
parent08039257610508b153d13b6cab1f252297d143a9 (diff)
downloadgcc-faf462cfe686228113fc9d968809dd4f40395dde.zip
gcc-faf462cfe686228113fc9d968809dd4f40395dde.tar.gz
gcc-faf462cfe686228113fc9d968809dd4f40395dde.tar.bz2
ada: Fix crash with -gnatdJ and -gnatyz
This patch makes it so -gnatyz style checks reports specify a node ID. That is required since those checks are sometimes made during semantic analysis of short-circuit operators, where the Current_Node mechanism that -gnatdJ uses is not operational. Check_Xtra_Parens_Precedence is moved from Styleg to Style to make this possible. gcc/ada/ * styleg.ads (Check_Xtra_Parens_Precedence): Moved ... * style.ads (Check_Xtra_Parens_Precedence): ... here. Also replace corresponding renaming. * styleg.adb (Check_Xtra_Parens_Precedence): Moved ... * style.adb (Check_Xtra_Parens_Precedence): here. Also use Errout.Error_Msg and pass it a node parameter.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/style.adb22
-rw-r--r--gcc/ada/style.ads3
-rw-r--r--gcc/ada/styleg.adb22
-rw-r--r--gcc/ada/styleg.ads4
4 files changed, 23 insertions, 28 deletions
diff --git a/gcc/ada/style.adb b/gcc/ada/style.adb
index aaa668a..18b110b 100644
--- a/gcc/ada/style.adb
+++ b/gcc/ada/style.adb
@@ -337,6 +337,28 @@ package body Style is
end if;
end Check_Identifier;
+ ----------------------------------
+ -- Check_Xtra_Parens_Precedence --
+ ----------------------------------
+
+ procedure Check_Xtra_Parens_Precedence (N : Node_Id) is
+ begin
+ if Style_Check_Xtra_Parens_Precedence
+ and then
+ Paren_Count (N) >
+ (if Nkind (N) in N_Case_Expression
+ | N_Expression_With_Actions
+ | N_If_Expression
+ | N_Quantified_Expression
+ | N_Raise_Expression
+ then 1
+ else 0)
+ then
+ Error_Msg -- CODEFIX
+ ("(style) redundant parentheses?z?", First_Sloc (N), N);
+ end if;
+ end Check_Xtra_Parens_Precedence;
+
------------------------
-- Missing_Overriding --
------------------------
diff --git a/gcc/ada/style.ads b/gcc/ada/style.ads
index c0925e9..9614242 100644
--- a/gcc/ada/style.ads
+++ b/gcc/ada/style.ads
@@ -196,8 +196,7 @@ package Style is
-- Called after scanning an entire expression (N) that does not require an
-- extra level of parentheses.
- procedure Check_Xtra_Parens_Precedence (N : Node_Id)
- renames Style_Inst.Check_Xtra_Parens_Precedence;
+ procedure Check_Xtra_Parens_Precedence (N : Node_Id);
-- Called after scanning a subexpression (N) that does not require an
-- extra level of parentheses according to operator precedence rules.
diff --git a/gcc/ada/styleg.adb b/gcc/ada/styleg.adb
index 287589f..c405dec 100644
--- a/gcc/ada/styleg.adb
+++ b/gcc/ada/styleg.adb
@@ -1054,28 +1054,6 @@ package body Styleg is
end if;
end Check_Xtra_Parens;
- ----------------------------------
- -- Check_Xtra_Parens_Precedence --
- ----------------------------------
-
- procedure Check_Xtra_Parens_Precedence (N : Node_Id) is
- begin
- if Style_Check_Xtra_Parens_Precedence
- and then
- Paren_Count (N) >
- (if Nkind (N) in N_Case_Expression
- | N_Expression_With_Actions
- | N_If_Expression
- | N_Quantified_Expression
- | N_Raise_Expression
- then 1
- else 0)
- then
- Error_Msg -- CODEFIX
- ("(style) redundant parentheses?z?", Errout.First_Sloc (N));
- end if;
- end Check_Xtra_Parens_Precedence;
-
----------------------------
-- Determine_Token_Casing --
----------------------------
diff --git a/gcc/ada/styleg.ads b/gcc/ada/styleg.ads
index 9028e85..a16ea5c 100644
--- a/gcc/ada/styleg.ads
+++ b/gcc/ada/styleg.ads
@@ -160,10 +160,6 @@ package Styleg is
-- Called after scanning an entire expression (N) that does not require an
-- extra level of parentheses.
- procedure Check_Xtra_Parens_Precedence (N : Node_Id);
- -- Called after scanning a subexpression (N) that does not require an
- -- extra level of parentheses according to operator precedence rules.
-
function Mode_In_Check return Boolean;
pragma Inline (Mode_In_Check);
-- Determines whether style checking is active and the Mode_In_Check is