diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-09-08 15:35:50 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-09-08 15:35:50 +0200 |
commit | 333e4f86e84ad505c372908d169c11032ba5641d (patch) | |
tree | c249290412ef76c234e19d98fee12915989bdcb7 /gcc/ada/gcc-interface/trans.c | |
parent | 683af98c7f55ab61e4764a97b749ef00fc9dfedd (diff) | |
download | gcc-333e4f86e84ad505c372908d169c11032ba5641d.zip gcc-333e4f86e84ad505c372908d169c11032ba5641d.tar.gz gcc-333e4f86e84ad505c372908d169c11032ba5641d.tar.bz2 |
[multiple changes]
2017-09-08 Bob Duff <duff@adacore.com>
* par-prag.adb, sem_prag.adb, snames.ads-tmpl: Implement pragma
Ada_2020, along the same lines as the other Ada version pragmas.
2017-09-08 Gary Dismukes <dismukes@adacore.com>
* sem_ch12.adb: Minor typo fixes and reformatting.
2017-09-08 Yannick Moy <moy@adacore.com>
* sem_aggr.adb (Resolve_Record_Aggregate):
Rewrite bounds of aggregate subexpressions which may depend on
discriminants of the enclosing aggregate.
2017-09-08 Yannick Moy <moy@adacore.com>
* sem_ch5.adb: Prevent assertion failure on illegal code.
2017-09-08 Yannick Moy <moy@adacore.com>
* lib-xref-spark_specific.adb (Add_SPARK_Xrefs.Is_SPARK_Scope): Avoid
calling Renamed_Entity on an entity which cannot be a renaming.
2017-09-08 Eric Botcazou <ebotcazou@adacore.com>
* exp_aggr.adb: Add with & use clause for Urealp.
(Aggr_Assignment_OK_For_Backend): Accept (almost all)
elementary types instead of just discrete types.
* sem_eval.adb (Expr_Value): Deal with N_Null for access types.
* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>:
Be prepared for the FP zero value in the memset case. Add small
guard.
2017-09-08 Eric Botcazou <ebotcazou@adacore.com>
* s-htable.adb (Static_HTable.Reset): Use aggregate instead
of loop.
From-SVN: r251894
Diffstat (limited to 'gcc/ada/gcc-interface/trans.c')
-rw-r--r-- | gcc/ada/gcc-interface/trans.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c index 9163eb1..8eff9c3 100644 --- a/gcc/ada/gcc-interface/trans.c +++ b/gcc/ada/gcc-interface/trans.c @@ -7037,14 +7037,17 @@ gnat_to_gnu (Node_Id gnat_node) /* Or else, use memset when the conditions are met. */ else if (use_memset_p) { - tree value = fold_convert (integer_type_node, gnu_rhs); + tree value + = real_zerop (gnu_rhs) + ? integer_zero_node + : fold_convert (integer_type_node, gnu_rhs); tree to = gnu_lhs; tree type = TREE_TYPE (to); tree size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_SIZE_UNIT (type), to); tree to_ptr = build_fold_addr_expr (to); tree t = builtin_decl_explicit (BUILT_IN_MEMSET); - if (TREE_CODE (value) == INTEGER_CST) + if (TREE_CODE (value) == INTEGER_CST && !integer_zerop (value)) { tree mask = build_int_cst (integer_type_node, |