### 4.1 ld and the H8/300

For the H8/300, ld can perform these global optimizations when you specify the --relax command-line option.

relaxing address modes
  ld finds all `jsr` and `jmp` instructions whose targets are within eight bits, and turns them into eight-bit program-counter relative `bsr` and `bra` instructions, respectively.

synthesizing instructions
  ld finds all `mov.b` instructions which use the sixteen-bit absolute address form, but refer to the top page of memory, and changes them to use the eight-bit address form. (That is: the linker turns mov.b `@` aa :16 into mov.b `@` aa :8 whenever the address aa is in the top page of memory).
bit manipulation instructions
  ld finds all bit manipulation instructions like `band, bclr, biand, bild, bior, bist, bixor, bld, bnot, bor, bset, bst, btst, bxor` which use 32 bit and 16 bit absolute address form, but refer to the top page of memory, and changes them to use the 8 bit address form. (That is: the linker turns bset #xx:3, `@` aa :32 into bset #xx:3, `@` aa :8 whenever the address aa is in the top page of memory).
system control instructions
  ld finds all `ldc.w, stc.w` instrcutions which use the 32 bit absolute address form, but refer to the top page of memory, and changes them to use 16 bit address form. (That is: the linker turns ldc.w `@` aa :32,ccr into ldc.w `@` aa :16,ccr whenever the address aa is in the top page of memory).