Don't skip prologue/epilogue when initializing alias.
authorBin Cheng <bin.cheng@linux.alibaba.com>
Wed, 28 Jul 2021 09:44:35 +0000 (17:44 +0800)
committerBin Cheng <bin.cheng@linux.alibaba.com>
Wed, 28 Jul 2021 09:44:35 +0000 (17:44 +0800)
Register might be modified in prologue/epilogue, which shouldn't
be skipped in alias info analysis.

2021-07-28  Bin Cheng  <bin.cheng@linux.alibaba.com>

gcc/
* alias.c (init_alias_analysis): Don't skip prologue/epilogue.

gcc/alias.c

index 69e1eb8..099acab 100644 (file)
@@ -3406,14 +3406,6 @@ init_alias_analysis (void)
   rpo = XNEWVEC (int, n_basic_blocks_for_fn (cfun));
   rpo_cnt = pre_and_rev_post_order_compute (NULL, rpo, false);
 
-  /* The prologue/epilogue insns are not threaded onto the
-     insn chain until after reload has completed.  Thus,
-     there is no sense wasting time checking if INSN is in
-     the prologue/epilogue until after reload has completed.  */
-  bool could_be_prologue_epilogue = ((targetm.have_prologue ()
-                                     || targetm.have_epilogue ())
-                                    && reload_completed);
-
   pass = 0;
   do
     {
@@ -3459,10 +3451,6 @@ init_alias_analysis (void)
                {
                  rtx note, set;
 
-                 if (could_be_prologue_epilogue
-                     && prologue_epilogue_contains (insn))
-                   continue;
-
                  /* If this insn has a noalias note, process it,  Otherwise,
                     scan for sets.  A simple set will have no side effects
                     which could change the base value of any other register.  */