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

--- Comment #7 from Hongtao.liu <crazylht at gmail dot com> ---
Since we also allow something like (concat:(subreg) (subreg)), should we also
allow subreg outside?

   gcc_checking_assert (!x
                       || !(TREE_CODE (t) == SSA_NAME || is_gimple_reg (t))
                       || (use_register_for_decl (t)
-                          ? (REG_P (x)
+                          ? (REG_P (x) || SUBREG_P (x)
                              || (GET_CODE (x) == CONCAT
                                  && (REG_P (XEXP (x, 0))
                                      || SUBREG_P (XEXP (x, 0)))


The below code also looks like it's going to handle SUBREG.

  if (x)
    {
      bool skip = false;
      tree cur = NULL_TREE;
      rtx xm = x;

    retry:
      if (MEM_P (xm))
        cur = MEM_EXPR (xm);
      else if (REG_P (xm))
        cur = REG_EXPR (xm);
      else if (SUBREG_P (xm))
        {
          gcc_assert (subreg_lowpart_p (xm));
          xm = SUBREG_REG (xm);
          goto retry;

Reply via email to