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

--- Comment #3 from Hongtao.liu <crazylht at gmail dot com> ---
static inline void
set_rtl (tree t, rtx x)
{
  gcc_checking_assert (!x
                       || !(TREE_CODE (t) == SSA_NAME || is_gimple_reg (t))
                       || (use_register_for_decl (t)
                           ? (REG_P (x)
                              || (GET_CODE (x) == CONCAT
                                  && (REG_P (XEXP (x, 0))
                                      || SUBREG_P (XEXP (x, 0)))
                                  && (REG_P (XEXP (x, 1))
                                      || SUBREG_P (XEXP (x, 1))))
                              /* We need to accept PARALLELs for RESUT_DECLs
                                 because of vector types with BLKmode returned
                                 in multiple registers, but they are supposed
                                 to be uncoalesced.  */
                              || (GET_CODE (x) == PARALLEL
                                  && SSAVAR (t)
                                  && TREE_CODE (SSAVAR (t)) == RESULT_DECL
                                  && (GET_MODE (x) == BLKmode
                                      || !flag_tree_coalesce_vars)))
                           : (MEM_P (x) || x == pc_rtx
                              || (GET_CODE (x) == CONCAT
                                  && MEM_P (XEXP (x, 0))
                                  && MEM_P (XEXP (x, 1))))));


x is 
(subreg:DF (reg:DI 154) 0),

t is 
 <ssa_name 0x7fffea4a9a68
    type <real_type 0x7fffea48b1f8 DFtype sizes-gimplified DF
        size <integer_cst 0x7fffea2e2e10 constant 64>
        unit-size <integer_cst 0x7fffea2e2e28 constant 8>
        align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffea2f9498 precision:64 context <translation_unit_decl 0x7fffea49c078
/scratch/jmyers/glibc/many12/src/gcc/libgcc/libgcc2.c>>
    visited var <parm_decl 0x7fffea497b00 d>
    def_stmt GIMPLE_NOP
    version:62>

and it hit REG_P (XEXP (x, 1)), XEXP (x, 1) is invalid for subreg, so set_rtl 
here doesn't accept subreg?

Reply via email to