Skip to content

Commit

Permalink
Merge pull request #37 from jjsuwa-sys3175/bunch_of_patches_v2
Browse files Browse the repository at this point in the history
GCC: xtensa: Backport patches from upstream/master (v2)
  • Loading branch information
earlephilhower committed Feb 24, 2023
2 parents e1b5672 + 59b7795 commit c791b74
Show file tree
Hide file tree
Showing 226 changed files with 28,686 additions and 9,674 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
From a2cde0c6443c440c2a2b72b5eea060229a0cff57 Mon Sep 17 00:00:00 2001
From: Jeff Law <jeffreyalaw@gmail.com>
Date: Sat, 9 Jul 2022 11:11:00 -0400
Subject: [PATCH] [RFA] Improve initialization of objects when the initializer

gcc/

* expr.c (store_expr): Identify trailing NULs in a STRING_CST
initializer and use clear_storage rather than copying the
NULs to the destination array.
---
gcc/expr.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/gcc/expr.c b/gcc/expr.c
index 991b26f33..6ff393462 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -5723,6 +5723,17 @@ store_expr (tree exp, rtx target, int call_param_p,
}

str_copy_len = TREE_STRING_LENGTH (str);
+
+ /* Trailing NUL bytes in EXP will be handled by the call to
+ clear_storage, which is more efficient than copying them from
+ the STRING_CST, so trim those from STR_COPY_LEN. */
+ while (str_copy_len)
+ {
+ if (TREE_STRING_POINTER (str)[str_copy_len - 1])
+ break;
+ str_copy_len--;
+ }
+
if ((STORE_MAX_PIECES & (STORE_MAX_PIECES - 1)) == 0)
{
str_copy_len += STORE_MAX_PIECES - 1;
--
2.20.1

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
From 2065a3fccb11e28ebcc42aa46c52a40b0fae9bea Mon Sep 17 00:00:00 2001
From: Kewen Lin <linkw@linux.ibm.com>
Date: Sun, 21 Nov 2021 20:18:31 -0600
Subject: [PATCH 01/31] xtensa: Fix non-robust split condition in
define_insn_and_split

This patch is to fix some non-robust split conditions in some
define_insn_and_splits, to make each of them applied on top of
the corresponding condition for define_insn part, otherwise the
splitting could perform unexpectedly.

gcc/ChangeLog:

* config/xtensa/xtensa.md (movdi_internal, movdf_internal): Fix split
condition.
---
gcc/config/xtensa/xtensa.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
index 2a8e59ee9..123916957 100644
--- a/gcc/config/xtensa/xtensa.md
+++ b/gcc/config/xtensa/xtensa.md
@@ -782,7 +782,7 @@
"register_operand (operands[0], DImode)
|| register_operand (operands[1], DImode)"
"#"
- "reload_completed"
+ "&& reload_completed"
[(set (match_dup 0) (match_dup 2))
(set (match_dup 1) (match_dup 3))]
{
@@ -1058,7 +1058,7 @@
"register_operand (operands[0], DFmode)
|| register_operand (operands[1], DFmode)"
"#"
- "reload_completed"
+ "&& reload_completed"
[(set (match_dup 0) (match_dup 2))
(set (match_dup 1) (match_dup 3))]
{
--
2.20.1

This file was deleted.

Loading

0 comments on commit c791b74

Please sign in to comment.