This is the mail archive of the gcc@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]

Re: Link-time optimzation


On Wed, Nov 16, 2005 at 02:26:28PM -0800, Mark Mitchell wrote:
>   http://gcc.gnu.org/projects/lto/lto.pdf

In Requirement 4, you say that the function F from input files a.o and
b.o should still be named F in the output file.  Why is this requirement
more than simply having the debug information reflect that both names
were originally F?  I see you go to some length in section 3 to ensure
actual symbol table duplicates, and I don't know why.

The rest of the requirements look good.  I cannot immediately think of
anything you've forgotten.

Section 2.2.1

  "invalid if and of"
  s/and/any/

  By focusing on c99 inline functions, you've forgotten the facts
  of gcc inline functions.  I'll give you a guess as to which set
  of semantics are actually used in practice.  Note that gcc's
  inline semantics are a superset of both C++ and c99, and that
  gcc doesn't actually implement c99 semantics at all.

Section 2.2.2

  You don't specifically mention arrays with differing ranges, but
  identical numbers of elements.  E.g. 0 to 5 and 1 to 6.

Section 3.4

  I don't think I understand how you plan to not duplicate code from
  ld to locate the set of object files.  The only way I can think of
  is for ld to actually extract the objects into new temporary files.
  Perhaps I've forgotten how much effort is involved here, but I can
  see it being easier to just duplicate this code and forget it.

Section 4.1

  Some more detail on what you have in mind wrt mapping scopes would
  be nice.

  My initial thought is that you wouldn't need anything special at
  all.  Just refer to the scopes from within the IL by offset within
  the CIE.  Perhaps I'm missing something that makes this hard.

Section 4.2

  What is the rationale for using a stack-based representation rather
  than a register-based representation?  A infinite register based
  solution would seem to map better onto gimple, making it easier to
  understand the conversion into and out of.  The required stacking
  and unstacking operations would seem to get in the way.

  C.f. plan9's inferno, rather than jvm or cil.

I'll say that I do like the notion of emitting the type and symbol
tables as normal dwarf3 output.  Especially since your proposal seems
to call for regular code to be emitted simultaneously, so that ld -r
can work.


r~


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