This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/77834] [7 Regression] ICE: in make_decl_rtl, at varasm.c:1311 with -O -ftree-pre -mstringop-strategy=libcall


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77834

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Apparently on the v_lsm.5 variable we trigger cfgexpand.c (set_rtl)'s
          /* If we have something recorded and it's not the same place
             as we want to record now, we have multiple partitions for the
             same base variable, with different places.  We can't just
             randomly chose one, hence we have to say that we don't know.
             This only happens with optimization, and there var-tracking
             will figure out the right thing.  */
          else if (DECL_RTL (var) != x)
            SET_DECL_RTL (var, pc_rtx);
hunk, because set_rtl is once called with
(mem/c:BLK (plus:DI (reg/f:DI 82 virtual-stack-vars)
        (const_int -64 [0xffffffffffffffc0])) [1 v_lsm.5+0 S64 A512])
on v_lsm.5_24 and then
(mem/c:BLK (plus:DI (reg/f:DI 82 virtual-stack-vars)
        (const_int -128 [0xffffffffffffff80])) [1 v_lsm.5+0 S64 A512])
on v_lsm.5_20 and then in pass_expand::execute
      /* If this decl was marked as living in multiple places, reset  
         this now to NULL.  */
      tree var = SSA_NAME_VAR (name);  
      if (var && DECL_RTL_IF_SET (var) == pc_rtx)
        SET_DECL_RTL (var, NULL);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]