On Fri, 27 Apr 2018, Kyrill Tkachov wrote: > > On 26/04/18 15:04, Christophe Lyon wrote: > > On 26 April 2018 at 15:41, Richard Biener <rguent...@suse.de> wrote: > > > On Thu, 26 Apr 2018, Christophe Lyon wrote: > > > > > >> On 26 April 2018 at 14:09, Richard Biener <rguent...@suse.de> wrote: > > >> > > > >> > Seen by Christophe Lyon, verified with a cross that this fixes the > > >> > issue. > > >> > > > >> > aarch64 people, can you please test & commit this? > > >> > > > >> > > >> As I have just written in bugzilla, this patch avoids an ICE when > > >> compiling newlib's sysopen.i, > > >> but I still see a similar crash when compiling vfprintf.i. > > > > > > There's a similar case still left. Complete patch: > > > > > With this version, the toolchain build completes, but I didn't run > > make check, nor tried aarch64-linux-gnu. > > > > A bootstrap and test on aarch64-none-linux-gnu shows no problems. > I don't know if there was a rationale for having the conversion to > intDI_type_node.
If that is somehow a required detail for SImode pointers then there needs to be a conversion from the pointer to uintSI_type_node before then extending to intDI_type_node. uintSI to match the setting of POINTERS_EXTEND_UNSIGNED for aarch64. Richard. > Thanks, > Kyrill > > > > Index: gcc/config/aarch64/aarch64.c > > > =================================================================== > > > --- gcc/config/aarch64/aarch64.c (revision 259669) > > > +++ gcc/config/aarch64/aarch64.c (working copy) > > > @@ -12267,23 +12267,17 @@ aarch64_gimplify_va_arg_expr (tree valis > > > if (align > 8) > > > { > > > /* if (alignof(type) > 8) (arg = arg + 15) & -16; */ > > > - t = fold_convert (intDI_type_node, arg); > > > - t = build2 (PLUS_EXPR, TREE_TYPE (t), t, > > > - build_int_cst (TREE_TYPE (t), 15)); > > > + t = fold_build_pointer_plus_hwi (arg, 15); > > > t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t, > > > build_int_cst (TREE_TYPE (t), -16)); > > > - t = fold_convert (TREE_TYPE (arg), t); > > > roundup = build2 (MODIFY_EXPR, TREE_TYPE (arg), arg, t); > > > } > > > else > > > roundup = NULL; > > > /* Advance ap.__stack */ > > > - t = fold_convert (intDI_type_node, arg); > > > - t = build2 (PLUS_EXPR, TREE_TYPE (t), t, > > > - build_int_cst (TREE_TYPE (t), size + 7)); > > > + t = fold_build_pointer_plus_hwi (arg, size + 7); > > > t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t, > > > build_int_cst (TREE_TYPE (t), -8)); > > > - t = fold_convert (TREE_TYPE (arg), t); > > > t = build2 (MODIFY_EXPR, TREE_TYPE (stack), unshare_expr (stack), t); > > > /* String up roundup and advance. */ > > > if (roundup) > > > > > > > > >> Thanks, > > >> > > >> Christophe > > >> > > >> > Thanks, > > >> > Richard. > > >> > > > >> > 2018-04-26 Richard Biener <rguent...@suse.de> > > >> > > > >> > * config/aarch64/aarch64.c: Simplify ap.__stack advance and > > >> > fix for ILP32. > > >> > > > >> > Index: gcc/config/aarch64/aarch64.c > > >> > =================================================================== > > >> > --- gcc/config/aarch64/aarch64.c (revision 259669) > > >> > +++ gcc/config/aarch64/aarch64.c (working copy) > > >> > @@ -12278,12 +12278,9 @@ aarch64_gimplify_va_arg_expr (tree valis > > >> > else > > >> > roundup = NULL; > > >> > /* Advance ap.__stack */ > > >> > - t = fold_convert (intDI_type_node, arg); > > >> > - t = build2 (PLUS_EXPR, TREE_TYPE (t), t, > > >> > - build_int_cst (TREE_TYPE (t), size + 7)); > > >> > + t = fold_build_pointer_plus_hwi (arg, size + 7); > > >> > t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t, > > >> > build_int_cst (TREE_TYPE (t), -8)); > > >> > - t = fold_convert (TREE_TYPE (arg), t); > > >> > t = build2 (MODIFY_EXPR, TREE_TYPE (stack), unshare_expr (stack), > > t); > > >> > /* String up roundup and advance. */ > > >> > if (roundup) > > >> > > >> > > > > > > -- > > > Richard Biener <rguent...@suse.de> > > > SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB > > 21284 (AG Nuernberg) > > -- Richard Biener <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)