[Bug tree-optimization/100727] [12 Regression] Recent change to WITH_SIZE_EXPR handling breaks mn10300-elf

2021-05-25 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100727

Richard Biener  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #5 from Richard Biener  ---
Fixed.

[Bug tree-optimization/100727] [12 Regression] Recent change to WITH_SIZE_EXPR handling breaks mn10300-elf

2021-05-25 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100727

--- Comment #4 from CVS Commits  ---
The master branch has been updated by Richard Biener :

https://gcc.gnu.org/g:316bdb2e8970a461f2ae1a7183262d18a72adab3

commit r12-1032-g316bdb2e8970a461f2ae1a7183262d18a72adab3
Author: Richard Biener 
Date:   Tue May 25 10:21:41 2021 +0200

middle-end/100727 - fix call expansion with WITH_SIZE_EXPR arg

call expansion used the result of get_base_address to switch between
ABIs - with get_base_address now never returning NULL we have to
re-instantiate the check in a more explicit way.  This also adjusts
mark_addressable to skip WITH_SIZE_EXPRs, consistent with how
build_fold_addr_expr handles it.

2021-05-25  Richard Biener  

PR middle-end/100727
* calls.c (initialize_argument_information): Explicitely test
for WITH_SIZE_EXPR.
* gimple-expr.c (mark_addressable): Skip outer WITH_SIZE_EXPR.

[Bug tree-optimization/100727] [12 Regression] Recent change to WITH_SIZE_EXPR handling breaks mn10300-elf

2021-05-25 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100727

--- Comment #3 from Richard Biener  ---
So it's fixed with

diff --git a/gcc/calls.c b/gcc/calls.c
index f3da1839dc5..74a5070605e 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -2397,6 +2397,7 @@ initialize_argument_information (int num_actuals
ATTRIBUTE_UNUSED,
 already in memory, instead of making a copy.  Likewise if we want
 to make the copy in the callee instead of the caller.  */
  if ((call_from_thunk_p || callee_copies)
+ && TREE_CODE (args[i].tree_value) != WITH_SIZE_EXPR
  && (base = get_base_address (args[i].tree_value))
  && TREE_CODE (base) != SSA_NAME
  && (!DECL_P (base) || MEM_P (DECL_RTL (base

where the get_base_address change lets WITH_SIZE_EXPR through now but not
before.  The only obvious followon difference is that we then do

  mark_addressable (args[i].tree_value);
...
  args[i].tree_value = build_fold_addr_expr_loc (loc,
 args[i].tree_value);
  type = TREE_TYPE (args[i].tree_value);

unchanged is that we pass the argument by reference and that the target
requests callee_copies.

Now, this is variadic args, so maybe the callee_copies thing doesn't apply
and/or the varargs setup code now is inconsistent - in the end it's an
ABI change.

So given get_base_address only ever returned NULL for WITH_SIZE_EXPR
and clearly the !base check switches between ABIs we have to make the
WITH_SIZE_EXPR check explicit.

I'm also testing the additional (but then not needed)

diff --git a/gcc/gimple-expr.c b/gcc/gimple-expr.c
index b8c732b632a..c3211795d33 100644
--- a/gcc/gimple-expr.c
+++ b/gcc/gimple-expr.c
@@ -900,6 +900,8 @@ flush_mark_addressable_queue ()
 void
 mark_addressable (tree x)
 {
+  if (TREE_CODE (x) == WITH_SIZE_EXPR)
+x = TREE_OPERAND (x, 0);
   while (handled_component_p (x))
 x = TREE_OPERAND (x, 0);
   if (TREE_CODE (x) == MEM_REF

[Bug tree-optimization/100727] [12 Regression] Recent change to WITH_SIZE_EXPR handling breaks mn10300-elf

2021-05-25 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100727

Richard Biener  changed:

   What|Removed |Added

Version|unknown |12.0
 Status|NEW |ASSIGNED
   Target Milestone|--- |12.0

--- Comment #2 from Richard Biener  ---
I will have a look.

[Bug tree-optimization/100727] [12 Regression] Recent change to WITH_SIZE_EXPR handling breaks mn10300-elf

2021-05-22 Thread law at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100727

--- Comment #1 from Jeffrey A. Law  ---
The v850-elf port is also seeing these failures in some of its multilib
configurations.

[Bug tree-optimization/100727] [12 Regression] Recent change to WITH_SIZE_EXPR handling breaks mn10300-elf

2021-05-22 Thread law at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100727

Jeffrey A. Law  changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever confirmed|0   |1
   Last reconfirmed||2021-05-23
   Assignee|unassigned at gcc dot gnu.org  |rguenth at gcc dot 
gnu.org