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

Reply via email to