Next: Compiler Policy Control
Up: Source Location Printing
Previous: How the Source is
  Contents
  Index
debug optimization quality
Source location information is only available when the debug
optimization quality is at least 2. If source location information is
unavailable, the source commands will give an error message.
If source location information is available, but the source location is
unknown because of an interrupt or unexpected hardware error
( see section unknown-locations), then the command will print:
Unknown location: using block start.
and then proceed to print the source location for the start of the basic
block enclosing the code location. basic
start location
It's a bit complicated to explain exactly what a basic block is, but
here are some properties of the block start location:
- The block start location may be the same as the true location.
- The block start location will never be later in the the
program's flow of control than the true location.
- No conditional control structures (such as if,
cond, or) will intervene between the block start and
the true location (but note that some conditionals present in the
original source could be optimized away.) Function calls do not end basic blocks.
- The head of a loop will be the start of a block.
- The programming language concept of ``block structure'' and the
Common Lisp block special form are totally unrelated to the
compiler's basic block.
In other words, the true location lies between the printed location and the
next conditional (but watch out because the compiler may have changed the
program on you.)
Next: Compiler Policy Control
Up: Source Location Printing
Previous: How the Source is
  Contents
  Index
Peter Van Eynde
2000-02-08