emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: master 78fc49407b8 1/3: Improve filling of ChangeLog entries


From: Po Lu
Subject: Re: master 78fc49407b8 1/3: Improve filling of ChangeLog entries
Date: Wed, 31 Jan 2024 22:01:18 +0800
User-agent: Gnus/5.13 (Gnus v5.13)

João Távora <joaotavora@gmail.com> writes:

> The unit tests are basically the only thing I can read from
> your code.  Really, in practice you'll be probably be the only one ever
> reading that long-winded Fotran-like code, so I wish you stick around
> for a long time maintaining it.

Not only are the insults uncalled-for, the assumptions they rest on are
also completely untrue.  Great volumes of "long-winded Fortran-like
code" exist in Emacs with no shortage of maintainers, just as they do in
other established free software projects.  See any file in CC Mode, or
GCC's reload.cc, which features this massive conditional dwarfing any of
ours:

  scalar_int_mode inner_mode;
  if (in != 0 && GET_CODE (in) == SUBREG
      && targetm.can_change_mode_class (GET_MODE (SUBREG_REG (in)),
                                        inmode, rclass)
      && contains_allocatable_reg_of_mode[rclass][GET_MODE (SUBREG_REG (in))]
      && (strict_low
          || (subreg_lowpart_p (in)
              && (CONSTANT_P (SUBREG_REG (in))
                  || GET_CODE (SUBREG_REG (in)) == PLUS
                  || (((REG_P (SUBREG_REG (in))
                        && REGNO (SUBREG_REG (in)) >= FIRST_PSEUDO_REGISTER)
                       || MEM_P (SUBREG_REG (in)))
                      && (paradoxical_subreg_p (inmode,
                                                GET_MODE (SUBREG_REG (in)))
                          || (known_le (GET_MODE_SIZE (inmode), UNITS_PER_WORD)
                              && is_a <scalar_int_mode> (GET_MODE (SUBREG_REG
                                                                   (in)),
                                                         &inner_mode)
                              && GET_MODE_SIZE (inner_mode) <= UNITS_PER_WORD
                              && paradoxical_subreg_p (inmode, inner_mode)
                              && LOAD_EXTEND_OP (inner_mode) != UNKNOWN)
                          || (WORD_REGISTER_OPERATIONS
                              && partial_subreg_p (inmode,
                                                   GET_MODE (SUBREG_REG (in)))
                              && (known_equal_after_align_down
                                  (GET_MODE_SIZE (inmode) - 1,
                                   GET_MODE_SIZE (GET_MODE (SUBREG_REG
                                                            (in))) - 1,
                                   UNITS_PER_WORD)))))
                  || (REG_P (SUBREG_REG (in))
                      && REGNO (SUBREG_REG (in)) < FIRST_PSEUDO_REGISTER
                      /* The case where out is nonzero
                         is handled differently in the following statement.  */
                      && (out == 0 || subreg_lowpart_p (in))
                      && (complex_word_subreg_p (inmode, SUBREG_REG (in))
                          || !targetm.hard_regno_mode_ok (subreg_regno (in),
                                                          inmode)))
                  || (secondary_reload_class (1, rclass, inmode, in) != NO_REGS
                      && (secondary_reload_class (1, rclass,
                                                  GET_MODE (SUBREG_REG (in)),
                                                  SUBREG_REG (in))
                          == NO_REGS))
                  || (REG_P (SUBREG_REG (in))
                      && REGNO (SUBREG_REG (in)) < FIRST_PSEUDO_REGISTER
                      && !REG_CAN_CHANGE_MODE_P (REGNO (SUBREG_REG (in)),
                                                 GET_MODE (SUBREG_REG (in)),
                                                 inmode))))
          || (REG_P (SUBREG_REG (in))
              && REGNO (SUBREG_REG (in)) >= FIRST_PSEUDO_REGISTER
              && reg_equiv_mem (REGNO (SUBREG_REG (in)))
              && (mode_dependent_address_p
                  (XEXP (reg_equiv_mem (REGNO (SUBREG_REG (in))), 0),
                   MEM_ADDR_SPACE (reg_equiv_mem (REGNO (SUBREG_REG (in)))))))))

I'm aware that GCC is abandoning reload for a new register allocator,
whose coding style is not substantially different, but offers fewer in
the way of prodigious conditionals to prove my point.

Whether you want to work on log-edit.el, of course, is up to you.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]