#

## Issue OPTIMIZE-DEBUG-INFO Writeup

    Issue:		OPTIMIZE-DEBUG-INFO
    References:	CLtL p. 160
    Category:	ADDITION
    Edit History:   V1  9 Sep 1988, David Gray (initial version)
                    V2 19 Sep 1988, David Gray (delete first alternative)

    Problem Description:

      The OPTIMIZE declaration provides a way to tell the compiler how important
      various qualities are in order to guide which optimizations are done.
      There is another quality, however, that is not mentioned, but is an
      important consideration for the compiler:  how much information
      should be included in the object code to facilitate debugging.  This
      includes both annotation added to enable a debugger to display more
      information to the user, and also suppression of optimizations that would
      confuse debugging by making it harder to connect the object code with the
      source code.

    Proposal OPTIMIZE-DEBUG-INFO:NEW-QUALITY:

      In the description of the OPTIMIZE declaration, add an additional quality
      named DEBUG, described as "ease of debugging".

     Rationale:

      Since ease of debugging is an issue that the user will be concerned with,
      and is an issue that the compiler needs to consider, this provides a clear
      way for the user to control the amount of debugging information placed in
      the object module, with DEBUG=0 meaning none and DEBUG=3 meaning "as much
      as possible".

     Current Practice:

      No current implementation of this is known.

     Cost to implementors:

      All would have to update their handling of OPTIMIZE declarations to accept
      the new quality.

     Cost to users:

      One more little feature to learn.  Some problems may result from the
      addition of the symbol DEBUG to the LISP package.

     Benefits:

      Provides users a standard way to control the interaction between
      the compiler and debugger, and saves implementors from having to invent
      implementation-dependent solutions.

     Costs of Non-Adoption:

      Continued confusion about how debug information should be controlled.

    Discussion:

      Concern has been raised that there is already a problem with the
      non-orthogonality of SPEED, SAFETY, and SPACE that would be made even
      worse with DEBUG added, since users tend to be perplexed by the
      interactions of these qualities.

Copyright 1996-2005, LispWorks Ltd. All rights reserved.