This avoids HWI -> unsigned truncation to end up with zero alignment which set_ptr_info_alignment ICEs on.
Bootstrap and regtest in progress. Richard. 2020-03-13 Richard Biener <rguent...@suse.de> PR tree-optimization/94163 * tree-ssa-pre.c (create_expression_by_pieces): Check whether alignment would be zero. --- gcc/tree-ssa-pre.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 8bd17b82368..7b171bc4e8f 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -2810,7 +2810,8 @@ create_expression_by_pieces (basic_block block, pre_expr expr, unsigned HOST_WIDE_INT hmisalign = args.length () == 3 ? tree_to_uhwi (args[2]) : 0; if ((halign & (halign - 1)) == 0 - && (hmisalign & ~(halign - 1)) == 0) + && (hmisalign & ~(halign - 1)) == 0 + && (unsigned int)halign != 0) set_ptr_info_alignment (get_ptr_info (forcedname), halign, hmisalign); } -- 2.16.4