https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102285
--- Comment #12 from qinzhao at gcc dot gnu.org --- with the following change, I can resolve the ICE: [opc@qinzhao-ol8u3-x86 gcc]$ git diff diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index 70ce6a4d5b8d..b07026165075 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -2655,6 +2655,7 @@ fold_builtin_alloca_with_align (gimple *stmt) SET_DECL_PT_UID (var, uid); /* Fold alloca to the address of the array. */ + mark_addressable (var); return fold_convert (TREE_TYPE (lhs), build_fold_addr_expr (var)); } diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 0fba404babe9..e06609861bf1 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1657,7 +1657,7 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs, bool maybe_reg = false; if (TREE_ADDRESSABLE (var)) { - TREE_ADDRESSABLE (var) = 0; + //TREE_ADDRESSABLE (var) = 0; maybe_reg = true; if (dump_file) { However, I am not very sure the change in tree-ssa.c. why TREE_ADDRESSABLE (var) is reverted in this routine?