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

Jeffrey A. Law <law at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|amylaar at gcc dot gnu.org         |enkovich.gnu at gmail 
dot com

--- Comment #14 from Jeffrey A. Law <law at redhat dot com> ---
Damn Joern, I was looking at this comment in the PA port last night wondering
if it was relevant to this discussion:

;; We use function calls to set the attribute length of calls and millicode
;; calls.  This is necessary because of the large variety of call sequences.
;; Implementing the calculation in rtl is difficult as well as ugly.  As
;; we need the same calculation in several places, maintenance becomes a
;; nightmare.
;;
;; However, this has a subtle impact on branch shortening.  When the
;; expression used to set the length attribute of an instruction depends
;; on a relative address (e.g., pc or a branch address), genattrtab
;; notes that the insn's length is variable, and attempts to determine a
;; worst-case default length and code to compute an insn's current length.

;; The use of a function call hides the variable dependence of our calls
;; and millicode calls.  The result is genattrtab doesn't treat the operation
;; as variable and it only generates code for the default case using our
;; function call.


Is this documented anywhere?  I certainly don't recall this restriction, but it
does answer one of the questions I'd been kicking around in my head.

Reply via email to