Jal Version 2 Compiler Options
==============================

File Naming
-----------
  -hex name
      Set the name of the generated HEX file to `name'. The default
      is the program name with `.jal' replaced by `.hex', or `.hex'
      appended if the program name doesn't end in `.jal'

  -asm name
      Set the name of the generated assembly file to `name'. The
      default is the program name with `.jal' replaced by `.asm', or
      `.asm' appended if the program name doesn't end in `.jal'

Misc.
-----
  -quiet
      Turns off the progress messages

  -s path
      Sets the library search path to `path'. Multiple directories
      are seperated by ';'

  -[no-]fuse
      Do not put the `__config' line in the assembly or HEX files

  -task n
      Sets the maximum number of concurrent tasks to n. The default
      is 0

  -clear
      Clear data area on program entry.


Bootloader
----------
  -rickpic
      Assumes the target PIC is using Rick Farmer's PIC bootloader. 
      This begins the program at 0x0003 instead of 0x0000 and forces 
      the first instruction to be a GOTO.

  -long-start
      Force the first generated instruction to be a long jump
      (needed by some bootloaders)

Warnings
--------
  -Wdirectives
      Warn if a compiler directive is found. A compiler directive
      occurs when an IF statement uses a constant expression. In this
      case the block is completely skipped -- not checked for
      syntax or other errors

  -Wstack-overflow
      Normally if a stack overflow is detected the compiler throws
      an error. This option changes it to a warning.

  -Wno-conversion
      Disable the `signed/unsigned mismatch' warning

  -Wno-truncate
      Disable the `assignment to smaller type...' warning

  -Wno-warn
      Disable all warnings

Optimizer
---------
  -expr-reduction
  -no-expr-reduction
      Turns on or off expression reduction (see EXPRESSION REDUCTION below)
      default : on

  -cexpr-reduction
  -no-cexpr-reduction
      Turns on or off constant expression reduction, also known as constant
      folding 
      default : on

  -temp-reduce
  -no-temp-reduce
      Attempt to re-use temporary variables created by complex
      evaluations
      default : off

  -const-detect
  -no-const-detect
      Attempt to detect variables that are only assigned a single
      value a change all references to them to constants
      default : off

  -variable-frame
  -no-variable-frame
      Allocate all variables used by a procedure into a data bank.
      default : off

  -variable-reduce
  -no-variable-reduce
      Do not eliminate variables that are never assigned and/or never
      used.
      default : on

  -load-reduce
  -no-load-reduce
      Reduce redundant assigned & loads (track W)
      default : off

Debugging
---------
  -debug
      Print copius amount of debugging information, and dumps much extra
      to the ASM file

  -pcode
      Places the generated pcode into the ASM file

  -nocodegen
      Do not do any PIC code generation


EXPRESSION REDUCTION
====================

The following simple expressions are reduced or removed:
  x + 0 --> x
  x - 0 --> x
  0 - x --> -x
  x * 0 --> 0
  x * 1 --> x
  x / 0 --> divide by zero error
  x / 1 --> x
  0 / x --> 0
  x % 0 --> 0
  x % 1 --> 0
  x < 0, x unsigned --> 0
  x <= 0, x unsigned --> x == 0
  x >= 0, x unsigned --> 1
  x > 0, x unsigned --> x != 0
  x & 0 --> 0
  x & x --> x
  x | 0 --> x
  x | x --> x
  x ^ 0 --> x
  x ^ x --> 0
  -x, x is a BIT --> x
  0 << x --> 0
  x << 0 --> 0
  x << n, n is greater than 8 * size x --> 0

