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. 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)