aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2022-05-24 01:39:08 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2022-07-06 13:29:49 +0000
commit889db59e6e77abf5253c8355d6a5ccbdfe42d3ec (patch)
treeb3132e01c9dad5d6ec295fc5cc953460fc61bf16 /gcc
parentcd7d1f448a4a826a4210121ed6bec989913ba4e7 (diff)
downloadgcc-889db59e6e77abf5253c8355d6a5ccbdfe42d3ec.zip
gcc-889db59e6e77abf5253c8355d6a5ccbdfe42d3ec.tar.gz
gcc-889db59e6e77abf5253c8355d6a5ccbdfe42d3ec.tar.bz2
[Ada] Do not give warnings for compiler-generated entities by default
gcc/ada/ * gcc-interface/trans.cc (gnat_gimplify_expr) <SAVE_EXPR>: New case.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/gcc-interface/trans.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ada/gcc-interface/trans.cc b/gcc/ada/gcc-interface/trans.cc
index f0602b8..758df38 100644
--- a/gcc/ada/gcc-interface/trans.cc
+++ b/gcc/ada/gcc-interface/trans.cc
@@ -8731,6 +8731,17 @@ gnat_gimplify_expr (tree *expr_p, gimple_seq *pre_p,
gimplify_and_add (TREE_OPERAND (expr, 0), pre_p);
return GS_OK;
+ case SAVE_EXPR:
+ op = TREE_OPERAND (expr, 0);
+
+ /* Propagate TREE_NO_WARNING from expression to temporary by using the
+ SAVE_EXPR itself as an intermediate step. See gimplify_save_expr. */
+ if (SAVE_EXPR_RESOLVED_P (expr))
+ TREE_NO_WARNING (op) = TREE_NO_WARNING (expr);
+ else
+ TREE_NO_WARNING (expr) = TREE_NO_WARNING (op);
+ break;
+
case UNCONSTRAINED_ARRAY_REF:
/* We should only do this if we are just elaborating for side effects,
but we can't know that yet. */