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?